抽象方法、抽象类
文章目录抽象方法抽象类注意点例子补充抽象方法用abstract声明抽象方法只有方法声明而没有方法体抽象方法必须存在于抽象类中而抽象类不能被实例化因此抽象方法必须由子类来实现。抽象类抽象类不能被实例化用于定义一些通用的属性、方法同时也可以包含抽象方法。抽象类通过abstract声明可以包含普通方法、成员变量、抽象方法。注意点4、子类继承抽象类时必须实现抽象类中的所有抽象方法否则子类也必须声明为抽象类。5、抽象类可以作为其他类的基类提供一些通用的属性和方法而子类可以通过继承抽象类来获得这些属性和方法并根据需要进行具体的实现。1、抽象类不能被实例化即不能使用new关键字来创建抽象类的对象。2、抽象方法只能存在于抽象类中而抽象类还可以包含普通方法和成员变量3、抽象类可以包含构造方法但不能用于实例化对象只能被子类调用。例子编写动物类成员方法是动物叫声写三个具体的类猫、狗、羊 它们都是动物类的子类并重写父类的成员方法。编写测试类随机产生三种具体动物调用叫声这个方法abstractclassAnimal{publicabstractvoidsound();}classCatextendsAnimal{Overridepublicvoidsound(){System.out.println(喵);}}classDogextends{Overridepublicvoidsound(){System.out.println(汪);}}classSheepextends{Overridepublicvoidsound(){System.out.println(咩);}}// 测试类importjava.util.Random;publicclassTest{publicstaticvoidmain(Stringargs[]){RandomrandomnewRandom();Animal[]animalsnewAnimal[]{newCat(),newDog(),newSheep()};for(inti0;ianimals.length;i){intindexrandom.nextInt(3);// 随机选一个动物// 方式1、使用变量AnimalrandomAnimalanimals[index];// 获取随机动物randomAnimal.sound()// 方式2、不使用变量 (直接调用)animals[index].sound();}}}补充虽然这个类是abstract抽象类但是不影响别的类通过类名.常量名读取抽象类的 static 静态常量。abstract只是禁止你 new RegexPatterns () 创建对象而已packagecom.hmdp.utils;publicabstractclassRegexPatterns{/** * 手机号正则 */publicstaticfinalStringPHONE_REGEX^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$;/** * 邮箱正则 */publicstaticfinalStringEMAIL_REGEX^[a-zA-Z0-9_-][a-zA-Z0-9_-](\\.[a-zA-Z0-9_-])$;/** * 密码正则。4~32位的字母、数字、下划线 */publicstaticfinalStringPASSWORD_REGEX^\\w{4,32}$;/** * 验证码正则, 6位数字或字母 */publicstaticfinalStringVERIFY_CODE_REGEX^[a-zA-Z\\d]{6}$;}别的类完全可以RegexPatterns.PHONE_REGEX直接调用看如下分析publicstaticfinalStringPHONE_REGEXxxx;public→ 所有包下的类都有权限访问static→ 属性属于类不需要 new 对象直接类名.常量名final→ 值不能被修改