抽象
一、抽象的由来
随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。
二、abstract的具体使用
1.abstract修饰类
- 此类称为抽象
- 抽象类不能有实例
- 抽象类是包含构造器的,因为子类对象实例化时,需要直接或间接的调用父类的构造器
- 抽象类中可以没有抽象方法。反之,抽象方法所在的类,一定是抽象类
2.abstract修饰方法
- 此方法为抽象方法
- 抽象方法只有方法的声明,没有方法体
- 抽象方法其功能是确定的(通过方法的声明即可确定),只是不知道具体如何实现(体现为没有方法体)
- 子类必须重写父类中所有的抽象方法之后,才可以实例化。否则,该子类仍然是一个抽象类
3.abstract不能使用的场景
①.abstract 不能修饰哪些结构?
属性、构造器、代码块等
②.abstract不能与哪些关键字共用
不能用abstract修饰私有方法、静态方法、final方法、final的类
- 私有方法不能重写
- 避免静态方法使用类进行调用
- final修饰的方法不能被重写
- final修饰的类不能被继承