Java多态中的注意事项

来源:互联网 发布:手机淘宝评论在哪里看 编辑:程序博客网 时间:2024/06/06 08:30

    • 覆盖 private method
    • fields 和static 方法
    • 构造函数内部的多态行为

覆盖 private method

因为private 方法是final函数,并且对于子类是不可见的,因此,子类中的同名函数是不具有多太的特性的。

fieldsstatic 方法

多态是针对方法的,对于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

0 0
原创粉丝点击