一、抽象类 |
【】几个类都具有相同的功能,但是功能内容不同,就抽取功能名,不抽取大括号内容(不能用大括号结束就在函数小括号后用分号结束)。这种函数一定要用关键字标识abstract抽象来标识,抽象关键字修饰的函数就称为抽象函数。抽象函数所在类也需要标记为抽象类。(因为这个类中具备的功能不知道是做什么的不具体,所以这一类也不具体,需要加标签) |
【】当一个类描述事物的时候,没有足够的信息描述事务,这个类就是抽象类。只明确有这个功能,不明确功能的内容。 功能细节确定不了,就是抽象方法。
|
为什莫要抽取抽象方法?直接在各个类直接写不行吗? |
抽象类也是抽取来的,但是越是向上抽取越不具体,越不具体就出现越多的抽象类。功能的声明有,但是实现方式不具体。 |
二、抽象类的特点 |
【】格式上:抽象方法只有声明,没有具体内容。抽象方法前加abstract修饰,抽象方法所在类class需要明确是abstract class 【】抽象类不能new 对象,无法实例化。 【】抽象类被继承后,子类中就有了抽象函数,子类如果不全部重写其中抽象函数,子类就还是抽象类。 简单说,抽象的都填实后,才能实例化建立对象。
|
如果想要成为犬科中的一员,那麽一定要覆盖这些抽象的方法,不覆盖不让你实例化。所以你一定会具备犬科的特征。 |
三、抽象类的细节理解 |
|
【】抽象类的构造函数可以用于子类构造器中的第一句super();给子类对象进行初始化 |
【】抽象类中可以不定义抽象方法。 一个类里面没有抽象方法,但是这个类定义为抽象类,目的就是不让这个类创建对象。 例子:一个类有方法体(就是大括号),但大括号内没有写入内容。这种类创建对象没有意义,所以定为抽象类。 |
【】private不行,因为抽象类的抽象方法需要被子类覆盖,父类一旦私有,就无法被外界访问到了,也就没法重写覆盖。 抽象需要被覆盖,隐藏起来就没法覆盖了 【】static不行,成员变为静态就不需要建立对象就能使用了,和抽象类要求子类继承重写的要求相违背。 【】final不行,一旦final类就不能继承和抽象要求继承相抵触,和抽象方法需要子类重写相抵触。 |
![]() |
【】抽象类要想使用,就必须被子类继承。抽象类一定是个父类。 |