1.超类变量可以加引用子类对象
可以访问哪些成员是由引用变量的类型决定的,而不是由所引用对象的类型决定的。
2.使用super关键字
- 用于调用超类的构造函数
- super()必须总是子类的构造函数中执行的第一条语句。
- super()总是引用调用类的直接超类,即最近超类的构造函数。
- 在类层次中,从超类到子类按照继承的顺序调用构造函数。
- 如果构造函数中没有使用super()函数,则将执行每个超类的默认构造函数或无参构造函数。
- 用于访问超类中被子类的某个成员隐藏的成员
- 如果希望访问超类中被重写的方法,可以通过super访问,如super.show()
3.动态方法调度
- 超类引用变量可以指向子类对象
- 如果超类包含被子类重写的方法,那么当通过超类引用变量引用不同类型的对象时,会执行不同版本的方法,由多引用对象的类型决定的。
- 多态性
- 继承
- 重写
- 抽象类
- 抽象类不能用于实例化对象,但是可以使用它们创建对象引用
4.接口
- 实现接口的类可以通过接口引用访问实现
- 对于实现接口的任何类的任何实例,都可以通过这种变量进行引用
- 当通过这些引用变量调用方法时,会根据接口当前实际引用的实例调用正确版本的方法
- 接口引用变量只知道由接口声明的方法,不能访问接口实现类的其他任何方法。