覆盖 private method
因为private 方法是final函数,并且对于子类是不可见的,因此,子类中的同名函数是不具有多太的特性的。
fields 和static 方法
多态是针对方法的,对于fields而言,是不存在多态性质的。
class Base{
public String name = "Base";
}
public class Upcasting extends Base{
public String name = "Upcasting";
public static void main(String [] args){
Upcasting u = new Upcasting();
Base b = new Base();
Base c = new Upcasting();
System.out.println(c.name);
System.out.println(b.name);
System.out.println(u.name);
}
}
输出结果:
Base
Base
Upcasting
从输出中,可以看出c是*upcasting*的引用,但是它指向的字段却是基类型的。
>*static*的方法不具有多态性,它是与 *class*绑定的,而不是和单个对象绑定的。
构造函数内部的多态行为
如果在父类的构造函数中调用了动态绑定的方法,这个方法的实现可能来自于子类,而在初始化父类时,子类还未被构造,可能会引起难以发现的bug