Java中四种访问权限

  
场景1:工程师A编写了一个类ClassA,但是工程师A并不希望ClassA被该应用中其他所用的类都访问到,那么该如何处理?
  
场景2:如果工程师A编写了一个类ClassA,其中有两个方法fun1、fun2,工程师只想让fun1对外可见,也就是说,如果别的工程师来调用ClassA,只可以调用方法fun1,那么该怎么处理?

此时,访问权限控制便可以起到作用了。

在Java中,提供了四种访问权限控制:默认访问权限(包访问权限),public,private以及protected。

一、Java中有四种访问权限

private、default(一般省略)、public、protected
在这里插入图片描述

  • private : Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。

  • default: 即不加任何访问修饰符,通常称为“默认访问权限“或者“包访问权限”。该模式下,只允许在同一个包中进行访问。

  • protected: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护访问权限”。被其修饰的属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。

  • public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包访问。

注意

  • 上述四种访问权限,只有默认访问权限和public能够用来修饰类。修饰类的变量和方法四种权限都可以。(本处所说的类针对的是外部类,不包括内部类)
  • 所谓的访问,可以分为两种不同方式:
    1. 第一,通过对象实例访问;
    2. 第二,直接访问。

  比如说,某父类protected权限的成员,子类是可以直接访问的,换一种说话是子类其实继承了父类的除了private成员外的所有成员,包括protected成员,所以与其说是子类访问了父类的protected成员,不如说子类访问了自己的从父类继承来的protected成员。
  另一方面,如果该子类与父类不在同一个包里,那么通过父类的对象实例是不能访问父类的protected成员的。

二、下面用表格来展示四种修饰符的访问权限范围:

passwd


三 、关于Java包和类文件的知识:

  • Java中的包 主要是为了防止类文件命名冲突以及方便进行代码组织和管理
  • 对于一个Java源代码文件,如果存在public类的话,只能有一个public类,且此时源代码文件的名称必须和public类的名称完全相同,另外,如果还存在其他类,这些类在包外是不可见的
  • 如果源代码文件没有public类,则源代码文件的名称可以随意命名。

参考 :

  • https://blog.csdn.net/itachiyang/article/details/43647909
  • https://zhuanlan.zhihu.com/p/81440851
  • https://www.cnblogs.com/dolphin0520/p/3734915.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章