11.2 抽象类和抽象方法

什么时候需要使用抽象类:

1、当多个类中出现相同功能,但是功能主体不同,这时可以进行向上抽取。只抽取功能定义,而不抽取功能主体。

(笔记:2、当类实例化无意义时,我们就需要将类定义为抽象类,让其不能实例化对象)

11.2.1 抽象类

用abstract关键字修饰的类,我们称之为抽象类。

public abstract class  Animal{

}

//其中 abstract 和权限修饰符的位置可以互换。

11.2.2 抽象方法

用abstract修饰,没有方法体的方法称为抽象方法,抽象方法只能定义在抽象类中

public abstract class  Animal{

    public abstract void showInfo(String name);//抽象方法

}

注意:

abstract 关键字,和哪些关键字不能共存???。

  1. final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类,因为抽象类不能被实例化,所以会被继承。

  2. private: 抽象类中的私有的抽象方法,不被子类所知,就无法被重写。而抽象方法的出现就是需要被重写。

  3. static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。可是抽象方法运行没意义。

总结:

  • 抽象类必须使用abstract来修饰。

  • 抽象方法一定在抽象类中。

  • 不能直接使用new关键字来创建抽象类的对象(抽象类不能被实例化)

  • 抽象类和一般类没有太大的不同,只是比一般类多个了抽象函数。就是在类中可以定义抽象方法。

  • 抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。

  • 如果一个类中出现了抽象方法,则该类必须标记为抽象类。

  • 子类继承抽象类时,父类中的抽象方法可以实现也可以不实现,如果抽象方法没有被实现,则子类也必须标记为抽象类(即子类若不是抽象类则必须实现抽象父类中的所有抽象方法)

results matching ""

    No results matching ""