多态中,成员变量的特点

class Super

{

    int i=0;

    public Super(String s)

    {

        i=1;

    }

    public Super()

    {

        i+=2;

    }

}

class Demo extends Super 

{

    public Demo(String s)

    {

        i+=5;

    }

    public static void main(String[] args) 

    {

        int i=4;

        Super d=new Demo("YES");

        System.out.println(d.i);

    }

}

打印的结果是7,就是i等于7。但是,我记得一个多态的引用,父类引用指向子类对象用来调用成员变量,那么调用的应该是父类下的 i 呀,为什么这里输出结果是7呢?那么这里调用的是父类的 i 吗?父类的 i 变为了7?

qq_HkJxGnMdGm_0
浏览 437回答 1
1回答

慕粉1469888185

子类中的int i = 4;因为没有传入参数列表所以没有意义然后子类中的构造函数,并没有super 所以默认super调用为空的构造函数所以i=0+2+5 = 7
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java