总所周知,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 即可。

  

最新文章

  1. javascript数据结构与算法---栈
  2. serialize存入数组
  3. CSS3动画效果结合JS的轮播
  4. 百度贴吧python吧抓取用户名和图片
  5. Guava-Optional可空类型
  6. Winform添加Label
  7. phalcon框架学习之view
  8. Spring中自动装配(转)
  9. C 双向链表
  10. c#生成注册码的两种方法(mac地址与IP地址)
  11. sql server基本流程语句
  12. javac 小记
  13. obj-c编程01[扩展学习01]:对象消息机制工作原理
  14. 关于vue使用form上传文件
  15. Skyline基本操作模式封装
  16. .NET Core实战项目之CMS 第十一章 开发篇-数据库生成及实体代码生成器开发
  17. 洛谷.3391.[模板]文艺平衡树(Splay)
  18. select标签的相关操作,选中,获取option的值,二级联动
  19. python 遍历enumerate
  20. streamsets origin 说明

热门文章

  1. 解决问题的思路(如故事版里面有东西,却不见了)(swift里面开发比较多)
  2. Integer大小比较问题
  3. poj 3177 Redundant Paths 求最少添加几条边成为双联通图: tarjan O(E)
  4. DevOps - 版本控制 - Git
  5. ECSHOP和SHOPEX快递单号查询百世快递插件V8.6专版
  6. JavaScript 对引擎、运行时、调用堆栈的概述理解
  7. C语言的结构体,枚举类型在程序中的作用
  8. STL——map和set
  9. OVERLAY(文字の上書き)
  10. Spring中的设计模式--观察者模式