PpLK: |Practical Java| Chapter 6 Classes and Interfaces

|Practical Java| Chapter 6   Classes and Interfaces
interface: 仅限 public 函数和 常量, 不包含任何实现代码.
59>   运用 interfaces 支持多重继承 multiple inheritance
         Java不支持 [实现上的多重继承] (multiple inheritance of implementation),
        她支持 [接口上的多重继承 (multiple inheritance of interface);
       
        所谓 [实现上的多重继承] 是通过 [扩展extending 一个以上的classes来进行的,
        这种做法违背 Java 规则.
        [接口上的多重继承] --- Java class 不能扩展多个classes, 却可以实现多个接口.
        可以将 interface 声明式当作 [标识接口](marker interface)来运用. --- 所谓标识
        接口是不含任何函数的一种 interface, 用来实现此接口的任何class一定具有某
        中属性 (property).
Ex:
        Java 程序库中有个 [marker interface] 是 Serializable. 她不含任何函数, 但任何classes
        只要实现了她, 都被期望表现出 [可序列化](serializing).
        [marker interface] 应该提供完备文档, 说明实现此接口之class应该表现的性质.
 
 
60>   避免 interfaces 中的函数发生冲突
        没什么能够防止两个 interfaces 对常量使用相同的名称, 或以相同名称或signature
        来声明函数.
        在实现多个接口时, 如果存在同名函数在不同接口中, 则要求其 reture type 必须
        一致, 而这样就会导致语义冲突, 所以接口的多继承时要注意;
        至于常量, 给出完整名称即可: Golfer.lowScore.
 
 
61>  如需提供部分实现 (partial implementation), 请使用 abstract classes!
        abstract class: 本身不能instantiated 的class, 但允许为其内声明的函数提供代码;
        从abstract class 派生出的类如果实现了abstract 方法, 则成为 concrete class ,否则
        也是abstract class;
62>   区分 interface / abstract class / 和 concrete class
63>   审慎的定义和实现 immutable classes (不可变类)
         immutable Object 是一种构建好就不再变化的 Object, 在其生存周期内不可被
         改变内容, 其通常用来表示字符串 / 颜色 / 数字.
        
         基本类型 primitive Types 不是对象!
 
 
64>   欲传递或接受 mutable objects (可变对象)的object references时, 请clone()
         实现 immutable class 时, 必须对传入或传出的 mutable objects 进行克隆.
         ------ 当对象作为函数参数传递时, 传递的是对象引用的复本.
         Shallow Cloning( 浅层克隆)  --- 此技术对object 进行逐位拷贝(bitwise copy),
        
         实现一个 immutalbe class 时应遵循下列规则: 
         A> 声明这个class 为final;
         B> 声明所有数据为 private;
         C> 只提供取值函数, 不提供设值函数;
         D> 在 construct 中设置所有 instance 数据;
         E> 如果函数返回 references to mutable objects, 请clone 那些mutable objects;
         F> 如果函数接受 references to mutalbe objects, 请clone 那些mutable objects;
         G> 如果缺省得shallow clone 不能符合 immutalbe object的正常行为, 请实现出
               deep clone .
 
 
65>   使用 inheritance 或 delegation (委托)来定义 immutable classes.
         三个可以用来定义 immutable classes 的技术: 
                A> immutalbe interface;
                B> common interface or base class;
                C> immutable delegation class;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值