zoukankan      html  css  js  c++  java
  • [Effective Java 读书笔记] 第三章类和接口 第十三 -- 十四条

    第十三条 使类和成员的可访问性最小化

      总得来说,我们应该尽量将成员的访问范围限制到最小!有利于解耦,开发、测试和优化都能够更加独立。

      对于成员(域,方法,嵌套类和嵌套接口),有四种可能的访问级别,访问范围从小到大:

    访问控制符 同类 同包子类  同包其它类 不同包子类 不同包其它类
    public
    protected ×
    默认 × ×
    private × × × ×

    另外,JAVA中的常量是全局访问的,public static final Integer VALUES_INTEGER = new Integer(10);

    上面的VALUES_INTEGER是不可更改的,而公有的静态final数组是可以更改的:

    public class MainTestJava {
        
        public static final Integer MAX_NUM = new Integer(10);
        public static final Integer[] MAX_NUM_A = {new Integer(10),new Integer(10),new Integer(10)};
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Integer ii = new Integer(11);
            MAX_NUM_A[1] = ii;//没有错误,可以赋值
                   MAX_NUM = ii;//有错误,不能赋值
    
        }
    
    }
    
            

    所以可以使用public的static final方法来获取数组的clone,将MAX_NUM_A置为private,不可更改

    第十四条 在公有类中使用访问呢方法而非公有域

        对于public的类,尽量不要让成员变量为public,而应该使用方法来访问: 如果类可以在包外访问(public),就应该提供访问方法,以保留将来改变该类内部表示法的灵活性。如果暴露了他的数据域,以后想要改变是不可能的。

        如果类是包级别私有的(private,default),或者是私有的嵌套类,可以考虑暴露它的数据域,因为这些数据被限制在包中,如果有必要,不改变包外的任何代码而只改变内部数据表示法也是可以的。

  • 相关阅读:
    AC日记——色板游戏 洛谷 P1558
    AC日记——方差 洛谷 P1471
    AC日记——[Scoi2010]序列操作 bzoj 1858
    AC日记——Sagheer and Nubian Market codeforces 812c
    AC日记——Sagheer, the Hausmeister codeforces 812b
    AC日记——Sagheer and Crossroads codeforces 812a
    [BJOI2019]排兵布阵 DP
    多重背包二进制优化
    BZOJ 3211 花神游历各国 线段树
    「CQOI2006」简单题 线段树
  • 原文地址:https://www.cnblogs.com/jiangz222/p/4799612.html
Copyright © 2011-2022 走看看