多态: 父类引用指向子类对象.
前提:有普通(抽象)父子关系或接口实现类关系.
若父类是普通类(里面没有抽象的方法)子类可以重写(或者)直接继承父类的方法,另外可以再添加自己一些特有的属性或方法,使用多态调用子类中特有的方法,需要进行向下转型才可以使用.
若父类中有抽象的类,那么子类中必须重写子类中的抽象方法(抽象的类不能new对象),重写完后也可以添加一些子类中特有的方法,调用时同普通类方法一样,需向下转型后才可调用.
(多态需要new 对象,在 = 左边是父类或接口, = 右边为子类) 同一个父类的方法,会被不同的子类调用,在调用方法时,调用的为各个子类重写后的方法.
多态的调用规则:
变量: 无论编译还是运行都看左边(父类);
方法: 分两种情况(1)非静态,编译看父类,运行看子类,父类没有编译则失败;
(2)用static修饰的方法,编译运行都看父类,因为静态和对象没有关系,属于静态绑定. |