• 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

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

  • 相关阅读:
    两种四元数插值的区别
    欧拉角与万向锁
    Unity3D 中脚本丢失问题
    Unity3D 中的定时器
    Unity3D Layout 快捷键
    Sublime Text 2 代码片断
    使用 Box2D 做一个 JansenWalker 机器人
    使用 Sublime Text 2 开发 Unity3D 项目
    Ant 常用语法及选项
    OC基础数据类型-NSNumber
  • 原文地址:https://www.cnblogs.com/cxsy/p/5360861.html
Copyright © 2020-2023  润新知