对象的多态性:对象的引用指向父类的对象
Java引用变量有两个类型:编译时类型和运行时类型。
编译时类型由声明该变量时使用的类型决定,
运行时类型由实际赋给该变量的对象决定(编译时,看左边;运行时,看右边)
若编译时出现类型不一致,就出现了对象的多态性。
多态情况下,
“看左边”:看的是父类的引用(父类中不具备子类特有的方法)
“看右边”:看的是子类的对象(实际运行的是子类重写父类的方法)
2.一个引用类型的变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能在访问子类中添加的属性和方法
3.方法声明的形参类型为父类类型,可以使用子类的对象作为实参调用该方法。
4.虚拟方法调用(多态情况下)
子类中定义了与父类同名同参数的方法,在多态情况下将此时的父类方法称为虚拟方法。
Person e = new Person();
e,getInfo();
编译时e为Person类型,而方法的调用是在运行时决定的
所以调用的是Student类的getInfor()-动态绑定
- 对于重载的方法,他们的调用地址在编译期就绑定了 ,则成为静态绑定
多态作用:提高了代码的通用性。
前提:需要存在继承或者实现关系;有方法的重写