Java学习笔记-OO之多态

时间:2023-02-25 18:36:25

多态的前提:
(1)必须存在继承关系,且必须有父类或父接口实现了子类或实现类的引用
(2)必须有方法的重写,因为这样才能体现多态性
多态是父类的引用new出子类的对象,例如:Superclass sc = new Subclass();此时这个对象sc由于是父类的引用所以,属性和方法都只能使用父类的,但是如果Subclass重写了Superclass的方法,那么会覆盖父类的方法,所以是对于方法来说是:编译看左边,运行看右边.
对于属性来说,没有重载,所以都是父类的属性,子类的扩展属性和方法都不可以使用
向上转型 && 向下转型:
向上转型是自动完成的,例如Superclass sc = new Subclass();就相当于把一个Subclass自动向上转为他的父类Superclass
然而向下转型就比较的危险,格式:Subclass sc2 = (Subclass) sc;此时因为不确定sc是否是Subclass的一个对象,如果他根本不是一个Subclass那么就会报错,所以向下转型之前必须使用instanceof来判断是否为子类的实例,才可以向下转型
综上所述:
多态增强了代码的扩展性,可以通过父类的引用灵活的使用子类的重写功能
但是不能使用子类的扩展功能,因为只能使用父类中定义的属性和方法