我是靠谱客的博主 超级啤酒,最近开发中收集的这篇文章主要介绍探索java的 protect/private变量,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

package myPack;

/*
 * Author:LiuXueYi
 * Date:2021-10-18 14:29
 * Description:测试 protect、private变量的权限范围
 */

public class BaseClass {
    public String myPublic = "aaaaaaaa" ;
    private String basePrivate = "bbbb";
    protected  String baseProtected = "ccccc";

    public void myPrint(){
        System.out.println("-------类的成员函数可以访问同类的所有成员---------");
        System.out.println("myPublic = " + myPublic);
        System.out.println("basePrivate = " + basePrivate);
        System.out.println("baseProtected = " + baseProtected);
    }

    public  static void main(String[] args){
        BaseClass baseClass = new BaseClass();
        baseClass.myPrint();
        System.out.println("-------类中的main函数可以访问同类的所有成员");
        System.out.println("myPublic = " + baseClass.myPublic);
        System.out.println("basePrivate = " +baseClass.basePrivate);
        System.out.println("baseProtected = " + baseClass.baseProtected);
    }
}


/**
 * 本包中类外部实例化:
 * 1、在类的外部(本包中)可以通过实例化的对象访问 类的 protect 变量,不能访问 private 变量
 */

class  OutMain {
    public static void main(String[] args) {
        BaseClass baseClass = new BaseClass();
        System.out.println("-------在类的外部通过实例化对象访问 public 变量---------");
        System.out.println("myPublic = " + baseClass.myPublic);
        System.out.println("-------本包中在类的外部也可以通过类的实例访问 protect 变量---------");
        System.out.println("baseProtected = " + baseClass.baseProtected);
        System.out.println("-------在类的外部(本包中),不能通过实例化对象访问 private 变量---------");
        //System.out.println("basePrivate = " + baseClass.basePrivate);
    }
}

/**
 * 派生类:
 * 1、(本包中)派生类可以访问父类的 protect 变量,不能访问 private 变量
 */
class  DeriveClass extends  BaseClass {
    private  String dPrivate = "派生类的私有变量";
    public void derivePrint() {
        System.out.println("-------派生类中可访问基类的 public 变量---------");
        System.out.println("myPublic = " + myPublic);
        System.out.println("-------派生类中可访问基类的 protect 变量---------");
        System.out.println("baseProtected = " + baseProtected);
        System.out.println("-------派生类中不能访问基类的 private 变量---------");//
        //System.out.println("basePrivate = " + basePrivate);
    }
}

/**
 * 派生类实例化对象:
 * 1、可以通过派生类的实例化对象访问基类的 protect 变量,不能访问基类的 private 变量;
 * 2、可以通过派生类的实例化对象访问派生类的 protect 变量,不能访问派生类的 private 变量;
 */
class  TestDeriveMain {
    public static void main(String[] args) {
        DeriveClass deriveClass = new DeriveClass();
        System.out.println("n=======通过派生类的实例对象调用其方法 derivePrint() --- start =========");
        deriveClass.derivePrint();
        System.out.println("=======通过派生类的实例对象调用其方法 derivePrint()---- end =========n");
        System.out.println("-------通过派生类的实例对象访问基类的 public 变量---------");
        System.out.println("myPublic = " + deriveClass.myPublic);
        System.out.println("-------通过派生类的实例对象访问基类的 protect 变量---------");
        System.out.println("baseProtected = " + deriveClass.baseProtected);
        System.out.println("-------不能通过派生类的实例对象访问基类的私有成员变量 basePrivate---------");
        //System.out.println("basePrivate = " + deriveClass.basePrivate);
        System.out.println("-------不能通过派生类的实例对象访问派自己类中的私有成员变量---------");
        //System.out.println("dPrivate = " + deriveClass.dPrivate);
    }
}

/*****************************************包2*************************/

package myPack2;
import myPack.BaseClass;

/*
 * Author:LiuXueYi
 * Date:2021-10-18 14:20
 * Description:<描述>
 */


public class testPrivate {
    public static  void main(String[] args){
        System.out.println("-------调用外部包的派生类-------------");
        MyDeriveClass myDeriveClass = new MyDeriveClass();
        myDeriveClass.deriveClassPrint();

        BaseClass baseClassNew = new BaseClass();
        System.out.println("n-------外部包通过实例化对象可访问基类的 public 变量 ----------");
        System.out.println("myPublic = " + baseClassNew.myPublic);
        System.out.println("n-------外部包不能通过实例化对象访问 protect 变量 ----------");
        //System.out.println("myProtected = " + baseClassNew.myProtected);
        System.out.println("n-------外部包实例化对象始终不能访问私有变量 ----------");
        //System.out.println("myPrivate = " + baseClassNew.myPrivate);
    }
}

/**
 * 在包的外部继承类
 */
class MyDeriveClass extends BaseClass {
    public  void deriveClassPrint(){
        System.out.println("-------外部包的派生类可访问基类的 public 变量---------");
        System.out.println("myPublic = " + myPublic);
        System.out.println("-------外部包的派生类可访问基类的 Protected 变量---------");
        System.out.println("myProtected = " + baseProtected);
        System.out.println("-------外部包的派生类不可访问基类的 Private 变量---------");
        //System.out.println("myPrivate = " + basePrivate);
    }
}

最后

以上就是超级啤酒为你收集整理的探索java的 protect/private变量的全部内容,希望文章能够帮你解决探索java的 protect/private变量所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部