软件培训网站建设,网站建设松江公司,网络推广和seo,北京珠宝网站建设1、抽象类概述 由来 父类中的方法#xff0c;被它的子类们重写#xff0c;子类各自的实现都不尽相同。那么父类的方法声明和方法主体#xff0c;只有声明还有意义#xff0c;而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定#xff0c… 1、抽象类概述 由来 父类中的方法被它的子类们重写子类各自的实现都不尽相同。那么父类的方法声明和方法主体只有声明还有意义而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定包含抽象方法的类就是抽象类。 定义 抽象方法没有方法体的方法。将 共性的 行为 方法 抽取到父类之后。由于每一个子类执行的内容是不一样所以在父类中不能确定 具体的方法体。该方法就可以定义为抽象方法。抽象类包含抽象方法的类。 2、abstract使用格式 抽象方法 使用abstract关键字修饰方法该方法就成了抽象方法抽象方法只包含一个方法名而没有方法体。 定义格式 修饰符 abstract 返回值类型 方法名 参数列表; 代码举例 public abstract void run(); 抽象类 如果一个类包含抽象方法那么该类必须是抽象类。 定义格式 abstract class 类名字 { } 代码举例 public abstract class Animal{ public abstract void run(); } 3、抽象的使用 继承抽象类的子类必须重写父类所有的抽象方法。否则该子类也必须声明为抽象类。最终必须有子类实现该父类的抽象方法否则从最初的父类到最终的子类都不能创建对象失去意义。 4、如何使用抽象类和抽象方法 不能直接创建new抽象类对象必须用一个子类来继承抽象父类。子类必须 覆盖重写 抽象父类当中所有的抽象方法。覆盖重写实现子类去掉抽象方法的abstract关键字然后补上方法大括号。创建子类对象进行使用。 5、注意事项 抽象类不能创建对象如果创建编译无法通过而报错。只能创建其非抽象子类的对象。理解假设创建了抽象类的对象调用抽象的方法而抽象方法没有具体的方法体没有意义。 抽象类不能实例化 抽象类中可以有构造方法是供子类创建对象时初始化父类成员使用的。理解子类的构造方法中有默认的super()需要访问父类构造方法。 public abstract class Fu {public Fu() {System.out.println(抽象父类构造方法执行);}public abstract void eat();
}class Zi extends Fu {public Zi() {//super(); 子类当中赠送的superSystem.out.println(子类构造方法执行);}Overridepublic void eat() {System.out.println(吃饭饭);}
}class DemoMain {public static void main(String[] args) {Zi zi new Zi();zi.eat();}
}
D:\Java\jdk-17\bin\java.exe -javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar3853:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin -Dfile.encodingUTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception DemoMain
抽象父类构造方法执行
子类构造方法执行
吃饭饭Process finished with exit code 0抽象类中不一定包含抽象方法但是有抽象方法的类必定是抽象类。理解未包含抽象方法的抽象类目前就是不想让调用者创建该类对象通常用于某些特殊的类的结构设计。 设计模式适配器模式就可以使用没有任何抽象方法的抽象类 抽象类的子类必须重写抽象父类中所有的抽象方法否则编译无法通过而报错。除非该子类也是抽象类。理解假设不重写所有抽象方法则类中可能包含抽象方法。那么创建对象后调用抽象的方法没有意义。