继承
复用类有组合,继承,代理三种形式;
使用关键字 extends, 表示对父类的继承;
class Parent{
public Parent(){
}
}
// ~~~~~~~~~
class Child extends Parent{
public Child(){
}
}
当生成一个 Child 对象时, Child 对象里包含一个 Parent 的子对象;
- 生成子类的对象, 先一级级调用父类的构造方法, 再调用子类的构造方法;
- 当父类和子类都只有默认的没有参数的构造方法时, 对父类的构造方法的调用是自动的;
- 如果构造方法是有参数的, 则需要在子类的构造方法中使用 super() 显示调用父类的构造方法;
继承的子类可以重载父类中同名参数不同的方法;
向上转型
子类的对象, 可以视作为父类的对象
子类中变量的初始化顺序
父类变量 -> 父类构造函数 -> 子类变量初始化 -> 子类的构造函数
协变类型
指的是方法特征签名要求返回的类型是父类, 结果实际使用时返回一个子类的对象, 子类是父类的协变类型