欢迎来到知了堂!
联系电话:知了堂-电话号码 028-62016472

分享Java四种访问权限修饰符的理解-知了堂

分享Java四种访问权限修饰符的理解

  Java语言的一大特性是封装。当把一些属性或者方法封装进了容器–类里面时候,产生这样一种需求,就是想针对不同的量或方法定义不同的访问权限,更加细粒度地维护一个类的封闭程度和私密程度。这个时候四种访问权限修饰符派上用场了。

  通俗理解,四种访问修饰符类似于Linux系统中不同用户的权限等级。Linux系统中root用户拥有所有权限,类似Java类中的public修饰的类、方法、变量拥有被所有其他XX访问使用的权限。

  下面列举了四种权限修饰符的作用范围:

四种权限修饰符的作用范围

 

  V表示能够被访问,X表示不能被访问。

  先明确类、包、子类、包外这四个相关指定访问范围的意义。

  类----在类的内部;

  包----在同一个包里面,类的外部;

  子类----继承的类,可能在包里,也可能在包外;

  包外----就是包的外部。

  用通俗易懂的例子来解释比较容易:

  1.假设某个类A,其中定义了public int a;

  class A{

  public int a;

  }

  那么在定义该变量a的类A里面可以访问该变量a;

  在类A所在的包里面其他类也可以访问a;

  A的所有子类可以访问a;

  不拥有A类的其他包里面的类也可以访问a.
 

  2.如果将a定义为protect int a ;

  那么在定义该变量a的类A里面可以访问该变量a;

  在类A所在的包里面其他类也可以访问a;

  A的所有子类可以访问a;

  不拥有A类的其他包里面的类不可以访问a.
 

  3.如果将a定义为int a(也就是不加任何权限修饰符,默认就是default):

  那么在定义该变量a的类A里面可以访问该变量a;

  在类A所在的包里面其他类也可以访问a;

  A的所有子类BU可以访问a;

  不拥有A类的其他包里面的类BU可以访问a.
 

  4.如果将a定义为private int a:

  那么在定义该变量a的类A里面可以访问该变量a;

  在类A所在的包里面其他类也BU可以访问a;

  A的所有子类BU可以访问a;

  不拥有A类的其他包里面的类BU可以访问a.

  可见被访问权限组件降低。

  其中注意public可以修饰类,但是protect不能修饰外部类。(内部类相当于变量。)
 

  版权声明:本文来源于网络,由知了堂搜集整理,仅供大家学习Java编程时使用