Java编程思想之读书笔记系列五 --- 第七章 --- 复用类

今天猛然想起,昨天居然忘记更新博客了。看了一下之前发布的博文,还有有几个阅读量的,感觉挺有意思的,希望自己能够持之以恒,保持博文更新的习惯。好了,接下来就是具体内容,关于类的复用。

  1. 使用类而不破坏现有代码,两种方式:
    1. 组合
    2. 继承
  2. 在不抛出异常的情况下仍旧可以打印一个null引用
  3. 在一个程序当中,可以为每个类都创建一个main()方法,可使每个类的单元测试都变得简便易行;即使一个类只具有包访问权限,其public main()仍然是可访问的
  4. 为了继承,一般的规则是:将所有数据成员都指定为private,所有方法都指定为public
  5. 当创建了一个导出类(子类)的对象时,该对象包含了一个基类的子对象。这个子对象与用基类直接创建的对象是一样的,只是后者来自于外部,而基类的子对象被包装在导出类对象内部。
  6. 代理,介于组合和继承之间的中庸之道,将一个成员对象置于所要构造的类中,同时在新类当中暴露了该成员对象的所有方法(即通过让这个成员对象代理所有需要的功能,实现和继承相同的效果)
  7. 一旦涉及垃圾回收,可信赖的事情就不多了。垃圾回收器可能永远也无法调用,即使被调用,它也会以任何它想要的顺序来回收对象。最好的办法是除了内存以外,不能依赖垃圾回收器去做任何事。如果需要进行清理,最好是编写你自己的清理方法,但不要使用finalize()。因为finalize()方法被调用的前提是垃圾回收器被调用
  8. 自己手动编写清理方法,需要注意顺序,首先执行类的所有特定的清理动作,其顺序同生产顺序相反(通常这就要求基类元素仍旧存活);然后,调用基类的清理方法
  9. 如果Java中的基类拥有某个已被多次重载的方法名称,那么在导出类中重新定义该方法名称并不会屏蔽其在基类中的任何版本(这一点与C++不同)
  10. 虽然可以创建protected域,但最好还是保持为private,这样可以一直保留“更改底层实现”的权利,然后通过protected方法来控制类的继承者的访问权限
  11. 在向上转型的过程中,类接口中唯一可能发生的事情是丢失方法,而不是获取它们
  12. 使用组合还是继承,一个最清晰的判断方法就是问一问自己是否需要从新类向基类进行向上转型
  13. final关键字:这是无法改变的,不想做改变可能出于两种理由:设计或效率。final数据、方法和类
  14. final数据:
    1. 有时数据的恒定不变是很有用的,比如:
      1. 一个永不改变的编译时常量。编译器可以将该常量值代入任何可能用到它的计算式中,也就是说,可以在编译时执行计算式,减轻了一些运行时的负担。在Java中,这类常量必须是基本数据类型,并且以关键字final表示。在对这个常量进行定义的时候,必须对其进行赋值
      2. 一个在运行时被初始化的值,而你不希望它被改变
    2. 一个既是static又是final的域只占据一段不能改变的存储空间
    3. 对于基本类型,final使数值恒定不变;而对于引用,final使对象引用恒定不变,但是对象本身却是可以被修改的,Java并未提供使任何对象恒定不变的途径。使引用成为final没有使基本类型成为final的用处大
    4. 根据惯例,既是static又是final的域将用大写表示,并使用下划线分隔各个单词
    5. 空白final:被声明为final但又未给定初值的域,必须在构造器中初始化
    6. final参数:无法在方法中更改参数引用所指向的对象。主要用来向匿名内部类传递数据
  15. final方法:
    1. 使用final方法的原因有两个:
      1. 将方法锁定,以防任何继承类修改它的含义,即确保在继承中方法行为保持不变,并且不会被覆盖
      2. 效率,已过时
    2. 类中所有的private方法都隐式地指定为是final的
  16. final方法:
    1. 不打算继承该类,而且也不允许别人这样做。即,该类的设计永不需要做任何变动,或者处于安全的考虑,不希望它有子类
    2. final类中的方法都隐式指定为final
  17. HashMap代替HashTable,ArrayList代替Vector
  18. 对象创建过程:
    1. 静态初始化
    2. 分配空间,并执行初始化
    3. 执行构造器
以上就是关于类的复用的笔记内容,如有错误,烦请各位看官指出,谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值