zoukankan      html  css  js  c++  java
  • java中4种修饰符访问权限的区别及详解全过程---转载

    java中4种修饰符访问权限的区别及详解全过程

    http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html

       java中4中修饰符分别为public、protect、default、private,他们这就说明了面向对象的封装性,所以我们要适用他们尽可能的让权限降到最低,从而安全性提高。

        下面详细讲述下它们的访问权限问题。(同一个类中除内部类外所有修饰符都是可以访问的,所以下面排除这种情况。)

        首先在这里把它们的访问权限表示出来:

        访问权限   类   包  子类  其他包

        public     ∨   ∨   ∨     ∨

        protect    ∨   ∨   ∨     ×

        default    ∨   ∨   ×     ×

        private    ∨   ×   ×     ×

        下面做进一步说明java中4种修饰符访问权限的区别及详解全过程:

    工具/原料

    • java运行环境

    • Notepad++

    方法/步骤

    1.  

      首先,说明public的权限问题,定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。

      这里要注意:当重写父类成员函数时,子类的成员函数不能比父类的成员函数权限小,一般重写把权限定义相同即可。

      代码如图所示:

       
       
       
       
       
       
       
       
       
    2.  

      上边把类都建好了,然后开始测试,如果均能编译通过,就说明用public修饰的类在本类、同包、子类、其他包中互相访问都是可以的。测试结果如下:(事实证明可以访问)

    3.  

      再来说明protect权限问题,同样定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。

      这里要注意:public可以修饰任何类而且类名要与文件名相同,protected不可以修饰类。

      Person代码如图所示,其他3个类同上:

    4.  

      同样开始测试protected权限问题,如果Person、People、Student能编译通过,就说明用protected修饰的类在本类、同包、子类中互相访问都是可以的,而Computer编译不通过说明protected不可以在包外没有继承关系的类中互相访问。测试结果如下:

    5.  

      接着说明default权限问题,同样定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。

      这里要注意:default(不写默认指定default)同public一样可以修饰任何类而且类名要与文件名相同。

      Person代码如图所示,其他3个类同上:

    6.  

      继续开始测试default权限问题,如果Person、People能编译通过,就说明用default修饰的类在本类、同包中互相访问都是可以的,而Student、Computer编译不通过说明default不可以在包外不管有没有继承关系的类都不可以互相访问。测试结果如下:

    7.  

      最后说明private权限问题,同样定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。

      这里要注意:private同protected一样不可以修饰类。

      Person代码如图所示,其他3个类同上:

    8.  

      最后测试private权限问题,private意思是私有的,如果Person能编译通过而People、Student、Computer编译不通过,就说明用private修饰的类只能在本类中访问。测试结果如下:

    9.  

      综上所述,java中4种修饰符访问权限的区别及详解全过程就此演示完了,再一次说明java语言的严谨性和安全性,我们在以后使用这4中修饰符时创建一个类,这个类的权限尽量要小,这样才能减少漏洞和提高安全性,从而体现java面向对象的封装性。

      最后如图再回忆一下java中4个修饰符的访问权限:

  • 相关阅读:
    PAT 甲级 1115 Counting Nodes in a BST (30 分)
    PAT 甲级 1114 Family Property (25 分)
    PAT 甲级 1114 Family Property (25 分)
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
  • 原文地址:https://www.cnblogs.com/lnn123/p/10307846.html
Copyright © 2011-2022 走看看