zoukankan      html  css  js  c++  java
  • Effective Java 4:类和接口

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

      用于信息隐藏,尽可能的使每个类或者成员不被外界访问,

      对于顶层的类和接口,只有两种访问级别:包级私有,和共有的,

      private:只有该类的内部才可以访问这个成员

      包级私有:声明的成员在包内部都不可以访问,缺省型

      protected:声明该类的包,和该类的之类都可以访问

      public:在任何地方都可以访问

      如果一个类覆盖了超类的一个方法,那么子类的访问级别一定不能比超类的访问级别低,如果一个类实现了一个接口的所有方法,那么接口中所有的方法都必须声明为共有的。

      实例域绝不能是公有的,包含公有可变域的类并不是线程安全的

      类具有共有的 静态final数组域,或者返回这种域的访问方法不可以:public static final Thing[] VALUES={};

      两种方法避免:使公有的数组变私有,增加一个共有的不可变列表,(2)数组私有,增加一个公有方法,返回私有数组的一个拷贝

      public static final Thing returnVa(){

        return VALUE.clone();

      常量域的定义:单词大写,并且之间用_下划线分割单词

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

      公有类永远不应该暴漏可变的域

    第十五条:使可变性最小化

      1.不要提供如何会修改对象的状态方法

      2.保证类不会被扩展

      3.使所有的域都是私有的,final的

      4.确保对于任何可变组件的互斥访问

      5.不可变对象线程安全,因为不可变

      6.鼓励客户端尽可能的重用现有的实例

      7.不可变类的唯一缺点是:对于每个不同的值,都需要一个单独的对象

      可变配套类:对于多操作步骤,提高性能,让所有的构造器变成私有的,或者包含私有的,并添加共有的静态工厂,代替公有构造器,坚决不要为每个get方法,编写一个相应的set方法

  • 相关阅读:
    实战之中兴ZXHN F460光猫破解超级密码+开启无线路由功能
    彻底弄懂css中单位px和em,rem的区别
    IntelliJ 2016.02设置maven 阿里云加速
    Mac 下 Intellij IDEA 2016.1.2+maven+jetty+ JRebel 6.4.3 破解+spring mvc
    javascript createElement ttf
    Spring MVC 4.2 增加 CORS 支持 Cross-Origin
    Maven根据不同个环境打包, 获取不同的配置文件等等
    HTML5播放器
    spring mvc 4数据校验 validator
    osx 文本编辑工具下载地址Sublime Text 3
  • 原文地址:https://www.cnblogs.com/csxf/p/3285273.html
Copyright © 2011-2022 走看看