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

  • 相关阅读:
    一个完善的ActiveX Web控件教程
    用ATL开发和部署ActiveX网页控件
    非IE内核浏览器支持activex插件
    OCX控件在IE中无法侦测到键盘消息( MFC ActiveX Control in IE Doesn't Detect Keystrokes)
    CImageList使用简要说明
    VC,一条会被鼠标移动的直线
    Java NIO学习笔记之基本概念
    netty源码分析
    如何绕过验证码方式总结
    解决Eclipse 启动后总是Building WorkSpace(sleeping)
  • 原文地址:https://www.cnblogs.com/jiangz222/p/4799612.html
Copyright © 2011-2022 走看看