Java 访问权限控制 小结

众所周知,Java提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。访问权限控制的等级,从最大权限到最小权限依次为:publicprotected包访问权限(没有关键词)和 private 。

对于类(Class)

  类既不可以是private的(这样会使得除该类之外,其他任何类都不可以访问它),也不可以是protected的。

  所以对于类的访问权限,仅有两个选择:包访问权限public 。

  public 类可以在其他包中调用

  包访问权限 类只能在该包里调用。

对于方法(Method)以及变量

访问权限修饰   类内部调用   同包下的外部类调用   不同包下的外部类调用   继承调用  
public     √       √       √       √  
protected     √       √         √  
包访问权限     √         √          
private     √              

注:不同包下的调用必须建立在类的访问权限必须为 public 。

接口开放方法的控制

  直接使用继承方法,可以获得父类的所有方法,则将父类所有的方法都暴露给了用户,如果想要控制开放的方法可以采用一种 “ 代理 ” 的做法来实现:

  例如现在有一个Class Two,其有A、B、C、D四种方法。

public class Two { public void A(){ } public void B(){ } public void C(){ } public void D(){ } }

  如果我们只想给用户提供A、B、C三种方法,则可以使用这种方法来实现:

public class One { private Two two; public void A() { two.A(); } public void B() { two.B(); } public void C() { two.C(); } }

  这种代理的方法,Idea可以自动帮助你生成。

  (1)写上你要代理的类,如上写的为: private Two two.

  (2)使用Generate -->  Delegates Method 即可。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c01f7c685f674493163ffbda50064811.html