当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体。但在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确地知道这些子类的如何实现这些方法。
抽象方法是只有方法签名,没有方法实现的方法。
1,抽象方法和抽象类
抽象方法和抽象类必须使用 abstract 修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法。
抽象方法和抽象类的规则如下。
抽象类必须使用 abstract 修饰符来修饰,抽象方法也必须使用 abstract 修饰符来修饰,抽象方法不能有方法体。
抽象类不能被实例化,无法使用 new 关键字来调用抽象类的构造器创建抽象类的实例。即使抽象类里不包含抽象方法,这个抽象类也不能创建实例。
抽象类可以包含 Field、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类、枚举类 6 种成分。抽象类的构造器不能用于创建实例,主要用于被其子类调用。
含有抽象方法的类(包括直接定义一个抽象方法;继承了一个抽象父类,但没有完全实现父类,但没有完全实现父类包含的抽象方法,以及实现乐一个接口,但没有完全实现接口包含的抽象方法 3 中情况)只能被定义成抽象类。
归纳起来,可以用“有得有失” 4 个字来描述抽象类。 “得” 指的是抽象类多了一个能力:抽象类可以包含抽象方法;“失” 指的抽象类失去了一个能力:抽象类不能拥有创建实例。
定义抽象方法只需在普通方法上增加 abstract 修饰符,并把普通方法的方法体(也就是方法后花括号括起来的部分)全部去掉,并在方法后增