zoukankan      html  css  js  c++  java
  • 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 即可。

      

  • 相关阅读:
    BZOJ 3506 机械排序臂 splay
    BZOJ 2843 LCT
    BZOJ 3669 魔法森林
    BZOJ 2049 LCT
    BZOJ 3223 文艺平衡树 splay
    BZOJ 1433 假期的宿舍 二分图匹配
    BZOJ 1051 受欢迎的牛 强连通块
    BZOJ 1503 郁闷的出纳员 treap
    BZOJ 1096 ZJOI2007 仓库设计 斜率优化dp
    BZOJ 1396: 识别子串( 后缀数组 + 线段树 )
  • 原文地址:https://www.cnblogs.com/rekent/p/7674554.html
Copyright © 2011-2022 走看看