关于抽象类和抽象方法的使用,以Person和student和Teacher为例,若Student类和Teacher继承于Person类,老师和学生都有Person的特征。在一个班级里,只需要创建老师和学生的实例,并不需要创建Person的实例。关于Person的方法,学生和老师都有各自的重写,那么Person类中的方法的内容就无意义了。这时候abstract关键字就派上用场了。以下是abstract的具体使用:
abstract可以修饰的结构为:类、方法。
abstract修饰类:
①被abstract修饰的类称为抽象类,不能创建对象,即不能实例化。
②abstract主要修饰父类,是包含有构造器的,因为子类要加载父类中的内容。
③抽象类中可以没有抽象方法,但是抽象方法必须在抽象类中。
如果将Person类的abstract删除掉,而Person类中还有抽象方法,就会报错:
abstract修饰方法:
①此方法被称为抽象方法,只有方法的声明,没有方法体。
正确的格式应该为:
②子类重写父类中的抽象方法也称为实现,子类必须实现(重写)父类中所有的抽象方法。
如果没有实现所有的方法,就会认为继承了父类中的抽象方法,而子类又不是抽象方法,就会报错。
当然,间接的父类中的抽象方法也要实现。如果创建一个Ceature类,让Person类继承于Ceature类(抽象类,其中有一个抽象方法为breath)。
abstract不能修饰的结构:成员变量,构造器,代码块等。
除次之外,还有一些方法和类也是abstract不能修饰的:
①private修饰的方法,因为私有的方法是不能重写的。
②静态的方法,abstract修饰的方法是不应该被调用的,如果方法被static修饰,就可以通过类来进行调用。
③final修饰的方法,final修饰的方法是不能再重写的。
④final修饰的类,final修饰的类是不能被继承的。