java学习(二)多态中成员变量详解

今天我总结了一下java多态中成员变量的赋值与调用

举一个我当初做过的小案例:

class Fu{
    int num;
    void show(){}
}

class Zi extends Fu{
    //int num;
    public Zi(int num){
        this.num = num;
    }

    public void show(){
        System.out.println("Zi:" + num);
    }
}
public class Demo {
    public static void main(String[] args) {
        Fu a = new Zi(10);
        System.out.println(a.num);
        a.show();
    }
}

1.首先先分析一下,当Zi类对象被创建出来时,在堆中给该对象分配了一块内存空间,它整个代表this,里面有一块空间是super,

(一)2.在给num赋值的时候先找它自身,如果在Zi类中也定义了一个num,则给它自己的num赋值,

3.而通过多态a.num调用的时候直接找的是它里面的super,所以输出结果应为0和10

(二)2.在给num赋值的时候先找它自身,如果在Zi类中没有定义num,则找它里面super的num赋值,因为它继承了Fu类,所以show()方法里的num也为10

3.而通过多态a.num调用的时候直接找的是它里面的super,所以输出结果应为10和10

(有理解不对的地方,还请大家指点,一起交流探讨)

原文地址:https://www.cnblogs.com/cxsy/p/5360861.html