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个修饰符的访问权限:

java中4种修饰符访问权限的区别及详解全过程的更多相关文章

  1. java中4种修饰符访问权限的区别

    访问权限 类 本包 子类 其他包 public √ √ √ √ protected √ √ √ x default(缺省) √ √ x x private √ x x x

  2. java中四种修饰符(private、default、protected、public)的访问权限

    权限如下: no. 范围 private default protected public 1 同一包下的同一个类 √ √ √ √ 2 同一包下的不同类 × √ √ √ 3 不同包下的子类 × × √ ...

  3. private ,friendly,public protected四种修饰符访问权限(从idea代码提示中看出)

    文件一,本类中可以访问全部: package xsf; /** * Created by liwenj on 2017/7/25. */ public class A { private int x= ...

  4. java中4中类修饰符访问范围

    public:本类中可见,同包中可见,子类中可见,其他包中可见. protected:本类中可见,同包中可见,子类中可见,其他包不可见. 默认:本类中可见,同包中可见,子类不可见,其他包不可见. pr ...

  5. Java 有几种修饰符?分别用来修饰什么

    4种修饰符 访问权限   类   包  子类  其他包 public     ∨   ∨   ∨     ∨ protect    ∨   ∨   ∨     × default    ∨   ∨   ...

  6. 详解Java中的访问控制修饰符(public, protected, default, private)

    Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获 ...

  7. Java学习笔记十九:Java中的访问控制修饰符

    Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...

  8. java中訪问修饰符

    较之c++ 中 public,proctected, private 三种訪问控制, java多了默认訪问控制. java中四种訪问控制权限 简单描写叙述为一下四句: 1)private 仅本类可见 ...

  9. java中的类修饰符、成员变量修饰符、方法修饰符。

    类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...

随机推荐

  1. kernel panic必备知识

    获得vmcore Kernel dump 是什么 Kdump – 捕捉kernel dump的工具 Kdump的工作原理 Kdump的配置 Dump分析的工具crash(1) 准备环境 根据vmcor ...

  2. 网络安全web部分

    Web安全 一.    SQL注入 1)    原理 通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序 ...

  3. Django admin(四)一些有用定制

    原文:https://www.cnblogs.com/linxiyue/p/4075048.html Model实例,myapp/models.py: 1 2 3 4 5 6 7 8 9 10 11 ...

  4. Codeforces 816C/815A - Karen and Game

    传送门:http://codeforces.com/contest/816/problem/C 本题是一个模拟问题. 有一个n×m的矩阵.最初,这个矩阵为零矩阵O.现有以下操作: a.行操作“row  ...

  5. windows 2003一个网卡绑定多个IP地址

    1.打开“网络连接”,选中需要添加多个IP的“本地连接”-->右键-->“属性”: 2.从“常规”中找到“Internet 协议(TCP/IP)属性”: 3.选择手动设置IP地址.网关.掩 ...

  6. [bzoj3282]Tree_LCT

    Tree bzoj-3282 题目大意:给你n个点m个操作.更改单点权值,加边,删边:查询路径异或和. 注释:$1\le n,m\le 10^5$ 想法:看到了加边删边,果断想到LCT维护.至于路径异 ...

  7. swift 笔记 (十四) —— 构造过程

    构造过程 为了生成类.结构体.枚举等的实例,而做的准备过程,叫做构造过程. 为了这个过程,我们一般会定义一个方法来完毕,这种方法叫做构造器.当然它的逆过程,叫做析构器,用于在实例被释放前做一些清理工作 ...

  8. CefSharp 设置cookie

    设置cookie var cookieManager = CefSharp.Cef.GetGlobalCookieManager(); await cookieManager.SetCookieAsy ...

  9. C语言读取文件大量数据到数组

    针对.txt文档的大量有规律数据,譬如100行8列的数据将其读取到二维数组(矩阵)中,留作之后的数据处理. 改程序通过宏定义的方法来确定将要读取程序的行数和列数,将数据读取到二维数组data[100] ...

  10. 过时的PreferenceActivity导致Fragment显示问题

    问题描写叙述: 在一个点击preferenceactivity中某项显示一个Fragment的场景中,出现错误: java.lang.RuntimeException: This should be ...