zoukankan      html  css  js  c++  java
  • Use Private Members from Base Class

      最近看了一段代码:在导出类中调用继承自基类的某个public函数,该函数中对基类中的private数据成员

    进行了赋值并将结果打印。看到程序的运行结果后,顿时感觉自己之前(我之前的理解这里就不说明了)对于

    基类/导出类中私有数据成员的理解并不是很准确。所以写了下面的这个程序,进行简单的验证并加深理解:

    class Insect {
        private int i = 9;
        Insect() {
            System.out.println("Insect.");
        }
        private int x1 = printInit("Insect.x1 initialized");
        //在导出类中不能访问基类的private成员函数print(),但可以访问printInit()(通过printInit()来访问private成员函数print()).
        int printInit(String s) {
            System.out.println(this.toString());
            this.print(s);
            return 47;
        }
        private void print(String s){
            System.out.println(s);
        }
        //在导出类中不能访问基类的private数据成员i,但可以访问usePrivateVar()(通过usePrivateVar()来访问private数据成员).
        public void usePrivateVar(){
            System.out.println(this.toString());
            System.out.println("i = " + this.i);
        }
    }
    
    public class beetle extends Insect {
        private int x2;
        private int k = printInit("beetle.k initialized");
        {
            x2 = printInit("beetle.x2 initialized");
        }
        public beetle() {
            System.out.println("beetle.");
        }
        public static void main(String[] args) {
            beetle b = new beetle();
            b.usePrivateVar();
        }
    }

     Output:

        beetle@1db9742            -- NOTE: NOT Insect.
        Insect.x1 initialized
        Insect.
        beetle@1db9742
        beetle.k initialized
        beetle@1db9742
        beetle.x2 initialized
        beetle.
        beetle@1db9742
        i = 9

      

      此外,注意beetle.x2 initialized 和 beetle.k initialized 的顺序. 与两个变量声明的顺序无关,而是

    由printInit()语句的调用顺序(两个变量初始化的顺序)决定。

  • 相关阅读:
    subtext 安装PythonIDE -Anaconda
    Python--DBUtil
    python操作oracle数据库-查询
    Python 离线工作环境搭建
    Scrapy-下载中间件
    centos安装 Anaconda3及使用
    Scrapy爬取人人网
    海明距离
    中心极限定理
    最大似然估计 (MLE)与 最大后验概率(MAP)在机器学习中的应用
  • 原文地址:https://www.cnblogs.com/lxw0109/p/Private_Members_from_Base_Class.html
Copyright © 2011-2022 走看看