抽象类和抽象方法的构造
- 在
class
前使用abstract
修饰的类叫抽象类 - 要构造抽象方法,其所在的类一定要是抽象类
- 在方法面前添加
abstract
并且去掉大括号,最后用分号结尾的方法就是抽象方法
抽象类和抽象方法的使用
-
不能直接通过
new
关键字来创建抽象对象,错误示范如下:
-
如果要使用抽象类则 必须用一个子类来继承抽象父类;而且子类必须覆盖重写(override) 父类当中所有的抽象方法,即:
- 去掉抽象方法的
abstract
关键字 - 补上方法体大括号
- 去掉抽象方法的
-
然后就可以按照正常的步骤来创建一个对象进行方法的调用了。
使用抽象类和抽象方法的注意事项
-
抽象类不能直接通过
new
创建对象,只能创建其非抽象的子类。 -
抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的
-
抽象类中,不一定包含抽象方法,但是有抽象方法的类一定是抽象类
- 这个抽象类就没有抽象方法,依然是一个抽象类
- 这种没有任何抽象方法的抽象类在设计模式中会进行讲解
- 但是具有抽象方法的类一定是抽象类
-
抽象类的子类,必须重写抽象父类中 所有 抽象方法之后,才可以进行对象的使用
new
关键字创建。如果子类没有重写抽象父类所有的抽象方法,那么子类也必须是一个抽象类。
-
创建一个子类
Dog
,这个子类只对父类Animal
中的一个抽象方法eat
进行重写,因此还有一个sleep
抽象方法没有进行重写,所以这个子类依然是一个抽象类。
-
创建一个 孙子类
DogGolden
,这个类继承自Dog
抽象类,并把sleep
这个抽象方法进行重写,因此,到这个孙子类DogGolden
为止,所有的抽象方法都重写完毕,因此他不在是一个抽象类,因此可以直接用new
关键字来创建DogGolden
类
-
上述的关系可通过下述直观图看到:
-