11.4 抽象类——只能作为父类存在,天生当爸爸的
抽象类不同于一般的类,它不能生成对象,只能作为父类存在。
抽象类具有高度抽象的特征,为所有子类提供统一的抽象方法。
11.4.1 创建抽象类——关键字abstract
abstract所修饰的类为抽象类。
抽象类是只有定义而无法实现对象的类。
抽象类中只关心所应实现的功能。
abstract class Dog { //抽象类类体 } 抽象类无法产生对象,下面的语句是错误的 Dog d = new Dog();
11.4.2 抽象方法
abstract 修饰的方法为抽象方法。
抽象方法在形式上仅有方法的方法头部分,没有方法体。
abstract void out();
抽象方法是只定义了功能而未能具体实现的方法,这决定了抽象方法只能在父类派生子类时才能通过覆盖实现。
******
抽象类中可以没有抽象方法,但抽象方法所在的类必须是抽象类。
******
如果由抽象类派生出一个非抽象的子类,因为非抽象子类可以创建对象,所以在子类中必须覆盖掉父类(抽象类)中所有的抽象方法,否则,只能将子类定义为抽象类。
******
public class Example1108 { public static void main(String[] args) { SonClass sc = new SonClass(); sc.out(); } } abstract class SuperClass //抽象类 { abstract void out(); } class SonClass extends SuperClass //子类继承抽象父类 { public void out() //子类实现父类的抽象方法 { System.out.println("SonClass"); } }
我们在写大型程序时,一般先设计最顶层、最抽象的类和方法,然后逐步实现细节化的类和方法。这种设计方法由粗到细,容易分析和理解。