zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    一款非常好用的范围滑动插件
    设置滚动条样式
    Qml 定义 constant
    qml 中 使用 shader
    Qt ImageProvider 的使用
    qt 汉化 国际化
    qt rcc 使用
    CentOS7/RHEL7 pacemaker+corosync高可用集群搭建
    Ubunt平台Qt出现:-1: error: cannot find -lgl
    排序-堆排序
  • 原文地址:https://www.cnblogs.com/cxsy/p/5360861.html
Copyright © 2011-2022 走看看