继承
- 生活中的继承: 继承财产(不劳而获)。
- 软件中的继承:
- 子类可以继承(获得)父类中的属性和方法。
- 子类无需声明就可以获得父类中的属性和方法。
- 利用“泛化”实现继承!泛化是指,将子类中共同的属性和方法抽取到父类中的过程。 父类的设计思路是:通过“泛化”方法将子类的属性和方法抽取到父类中。所以在面向对象设计中,是先有子类再抽象出父类的。
- 继承语法:
- 使用extends实现继承
- 被继承者是父类(超类 Super class)中的属性和方法被子类继承
- 继承者是子类(Sub class)
- Java 是单继承语言
- 一个类只能继承于一个父类
- 一个父类可以有多个子类
- 如果没有父类,则自动继承于 Object 类型。
- 类最终继承于Object
继承中的构造器
- 构造器不能继承!
- 子类一定调用父类构造器
- 如果父类中没有无参数构造器,默认调用时候子类中会出现编译错误。一般在父类中定义无参数构造器加以解决。
- 一般将子类中公共的属性初始化逻辑封装到父类中,子类利用super()方法调用这个构造器,达到复用构造器逻辑的目的。
- super() 用于子类调用父类构造器
- 默认情况下,编译器自动添加 super(),自动调用服务无参数构造器
- 使用super(参数)调用父类中有参数构造器,达到复用构造器的目的
- super() 只能在子类构造器中使用,只能写在第一行。
- 设计的思路是: 将父类属性的初始化写在父类中,由子类调用,这样就可以复用逻辑,消除冗余的初始化代码。
方法的继承
子类可以继承父类的中的方法,可以将子类的公共方法定义到父类中,减少子类中的冗余代码