您的位置:首页 > 编程语言 > Java开发

Java多态中的注意事项

2015-07-27 20:17 441 查看
覆盖 private method

fields 和static 方法

构造函数内部的多态行为

覆盖 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: