Java-多态
转型
向上转型时, 得到的引用作为父类类型看待, 但是方法会执行子类重写后的方法。
通过向上转型得到了父类引用可以强制转换为相应子类, 即向下转型, 但不能强制转换为其他子类。
可以通过instanceof
关键字预先判断。
1 |
|
通过向上转型, 只用父类定义方法, 而直接使用子类进行操作。
抽象类
定义抽象类:
1 |
|
抽象方法必须定义在抽象类中。
抽象方法需要所在抽象类被继承后使用, 抽象类被继承后, 子类必须实现所有抽象方法(除非子类也是抽象类), 因此代码会有冗余的问题。
接口
抽象类的子类有些方法都需要, 但有些方法只有部分子类需要, 可以把这类方法放在接口中。
可以使用多个接口, 接口之间也可以继承
定义和使用接口:
1 |
|
接口中的方法都是 public abstract
, 变量都是 public static final
。
如果需要预先实现方法, 需要用default
修饰。
可以通过向上转型用接口来定义对象。 这时接口可以当作子类进行操作。