浅析Java中的访问权限控制
适应场景举例
场景1:工程师A编写了一个类ClassA,但是工程师A并不希望ClassA被该应用中其他所用的类都访问到,那么该如何处理?
场景2:如果工程师A编写了一个类ClassA,其中有两个方法fun1、fun2,工程师只想让fun1对外可见,也就是说,如果别的工程师来调用ClassA,只可以调用方法fun1,那么该怎么处理?
Java提供了4种访问权限控制,即public、protected、默认访问权限(包访问权限)、private;
注意:
只有public和默认访问权限可修饰外部类,public、protected、默认访问权限和private可修饰内部类;
public、protected、默认访问权限和private可修饰类的成员变量/方法;
一、修饰类(外部类)
1 public
表示该类对其他所有的类可见;
2 默认权限访问
表示该类只对同一个包的其他类可见;
二、修饰类的成员变量/方法
1 public
public修饰的成员变量/方法,在任何地方都可见;
2 protected
protected修饰的成员变量/方法,对于同一个包的类,该类的成员方法/变量可被访问;对于不同包的类,只有继承于该类的类才可访问该类的成员方法/变量;
3 默认访问权限(包访问权限)
没有访问权限修饰符修饰的成员变量/方法,只有在同一个包的类才可访问该类的成员变量/方法;
4 private
private修饰的成员变量/方法,只有在该类本身才可访问该类的成员方法/变量;
补充:
Java中包主要防止类文件命名冲突以及方便进行代码组织和管理;
对于一个Java源代码文件,若存在public类,只能有一个public类,且此时源代码文件的名称必须和public类的名称完全一致;若存在其他类,这些类在包外是不可见的;若源代码文件没有public类,则源代码文件的名称可随意命名;
注明:此文章是转载海子的博文,详情见:http://www.cnblogs.com/dolphin0520/p/3734915.html