zoukankan      html  css  js  c++  java
  • protected的一些功能


    java的访问限制有private、protected、public。这里只想进一步认识一下protected。

    我对protected有4个疑问:

    1,在相同包中,是否可以调用其它类的protected函数?

    2,在不同包中,是否可以调用其它类的protected函数?

    3,在子包中,父包的类能否调用子包的类的protected函数?

    4,在父包中,子包的类能否调用父包的类的protected函数?

    带着这4个疑问,我开始做实验,先建立一个test_protected_prj的java工程,然后在src里边建立包school0,在包school0中建立两个类LiLei和HanMeimei,如图:



    在类LiLei中定义一个protected函数,如下:

    package school0;
    
    public class LiLei {
    	protected int getMathScore(){
    		return 90;
    	}
    }

    在类HanMeimei中定义一个函数访问LiLei的protected函数,让韩梅梅询问她的同学李雷的数学考了多少分,如下:

    package school0;
    
    public class HanMeimei {	
    	public void askSchoolmate(){
    		LiLei lilei = new LiLei();
    		lilei.getMathScore();
    	}
    }

    此时发现编译器没报错,说明相同包中可以访问其它类的protected函数。


    那么接下来看第二个问题:

    在src目录下建立包school1,和包school0是平级的,在school1中建立一个类BadStudent,如图:




    在BadStudent类中定义函数,让他询问李雷数学考了多少分,如下:



    此时编译器报错了,说明BadStudent不能够访问LiLei的getMathScore函数,protected函数不能跨包被访问。


    接下来,看第3个问题:

    在包school1下边建立包class1,在class1中建立类XiaoDi,如图:




    在XiaoDi中定义函数getMathScore,如下:

    package school1.class1;
    
    public class XiaoDi {
    	protected int getMathScore(){
    		return 0;
    	}
    }

    在BadStudent中访问XiaoDi的getMathScore函数,如图:


    编译器报错,父包的类不能调用子包的类的protected函数,看来小弟也不愿意告诉坏学生分数,考得太低了,不愿意说。


    接下来看第4个问题:

    在BadStudent中定义函数getMathScore,如下:

    package school1;
    
    
    public class BadStudent {
    	protected int getMathScore(){
    		return 0;
    	}
    }


    在XiaoDi中定义函数askScore函数,如下:


    编译器报错了,XiaoDi没有权限访问BadStudent的getMathScore函数。



    最后总结如下:

    只有在同包中的两个类,才可以互相访问protected函数。不同的包,包括父包和子包,不能访问其他类的protected函数。









  • 相关阅读:
    JavaEE中Filter实现用户登录拦截
    【Tomcat】如何注册Tomcat到Window Service服务
    案例分析:项目组内踢皮球事件
    最大子序列求和问题
    《游戏脚本的设计与开发》-第一部分总结 文字脚本的功能扩展和一个游戏测试
    ajax异步请求实例
    创建用于编译和运行Java程序的批处理文件
    Codeforces Round #189 (Div. 2)
    新的研究方向
    怎样在android实现uc和墨迹天气那样的左右拖动效果
  • 原文地址:https://www.cnblogs.com/riskyer/p/3268542.html
Copyright © 2011-2022 走看看