2012-05-04
163-170/913
Java编程思想第四版——第二十一天
7.3 代理
Java没有提供对代理的直接支持,这是继承与组合之间的中庸之道。讲一个成员对象置于所要构造的类中(就像组合),但与此同时在新类中暴露了该成员对象的所有方法(就像继承)。
7.4 结合使用组合和继承
同时使用组合和继承是很常见的事。
虽然编译器强制初始化基类,并且要求在构造器起始处就要这么做,但是它并不监督必须将成员对象也初始化,这一点需要自己时刻注意。
7.4.1 确保正确清理
注意对基类清理方法和成员对象清理方法的调用顺序,以防某个子对象依赖于另一个子对象情形的发生。一般而言,所采用的形式应该与C++编译器在其析构函数上所施加的形式相同:首先,执行类的所有特定的清理动作,其顺序同生成顺序相反(通常这就要求基类元素仍旧存活),然后,调用基类的清理方法。
许多情况下,清理并不是问题,仅需让垃圾回收器完成该动作就行。但当必须亲自处理清理时,就得多做努力并多加小心。
最好的办法是除了内存以外,不能依赖垃圾回收器去做任何事,如果需要进行清理,最好是编写自己的清理方法,但不要使用finalize()。
7.4.2 名称屏蔽
如果java的基类拥有某个已被多次重载的方法名称,那么在导出类中重新定义该方法名称并不会屏蔽其在基类中的任何版本(这一点与C++不同)。因此,无论是在该层或者它的基类中对方法进行定义,重载机制都可以正常工作。
Java SE5新增加了@Override注解,不是关键字,但是可以把它当作关键字使用。当想要覆写某个方法时,可以选择添加这个注解,在不留心重载而非覆写了该方法时,编译器就会生成一条错误消息。
@Override注解可以防止在不想重载时而意外地进行了重载。
还是对这个标记有点迷糊。
分享到:
相关推荐
- **第十一章:摊销分析** —— 分析了某些数据结构和算法在一系列操作下的平均时间复杂度。 - **第十二章:高级数据结构与实现** —— 探讨了更复杂的高级数据结构和它们的具体实现细节。 #### 三、具体知识点详解...
提高部分从第十一章至第十六章,重点关注Java语言在实际编程中的高级应用,旨在帮助读者掌握更复杂的编程技巧,以便进行大型Java应用程序的开发。这部分包括: 1. **对象容器类**:第十一章讲解了如何使用Java提供...
### 第十五届蓝桥杯Java A组参赛总结 #### 知识点一:比赛规则与流程 - **考试流程**:参赛者需首先下载题目,使用官方提供的解压密码解压试题包。整个考试时长为4小时。 - **提交方式**: - 在考试过程中,参赛...
3. **第十一章至第十三章——JNI技术规范**:这部分内容作为技术规范,为开发者提供了详细的指引,既可以作为参考手册,也适用于那些需要自行实现JNI标准的高级用户。 #### 四、JNI的角色与限制 - **角色**:JNI...
本书在第二章详细讲解了数组的基本操作,如创建、遍历、插入、删除等,并通过Java代码示例展示了数组的应用场景。 2. **简单排序算法**:第三章介绍了几种简单的排序算法,如冒泡排序、选择排序、插入排序等。这些...
- **红黑树**:介绍了一种常用的自平衡二叉查找树——红黑树,并讨论了它的特点和应用场景。 ### 五、哈希表(Chapter 5) - **哈希函数的设计**:探讨了哈希函数的构造原理及优化策略。 - **解决哈希冲突的方法**...
阅读本书唯一的前提条件,是具备对Java编程或类似面向对象语言(比如说C#)的基本理解,不需要拥有为移动设备开发软件的经验。实际上,如果你确实有这方面的经验,反倒应该忘记它们。Android是如此与众不同,因此...
第十一章 方 法 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 ...
5.8 版本 6:第四次优化:缓存(Caching) 5.9 从故事中学到的 第6章 集成测试框架:脆弱之美 6.1. 三个类搞定一个验收测试框架 6.2. 框架设计的挑战 6.3. 开放式框架 6.4. 一个HTML解析器可以简单到什么程度? 6.5. ...
##### 第十一章:方法 - **11.1 方法的声明** 介绍如何声明一个方法,并定义其参数。 - **11.2 方法中的参数** 讨论了不同类型的参数(如值参数、引用参数等)的使用方法。 - **11.3 静态和非静态的方法** ...
#### 第十一章:方法 - **11.1 方法的声明** - 返回类型、参数列表等。 - **11.2 方法中的参数** - 值参数、引用参数、输出参数等。 - **11.3 静态和非静态的方法** - 静态方法不依赖于类的实例。 - 非静态方法...
- 面向对象的编程思想是C#设计的基础,掌握面向对象的基本概念和技术对于编写高质量的C#程序至关重要。 ##### 第十章:类 - **10.1 类的声明** - 类是对象的模板,包含数据成员和成员方法。 - **10.2 类的成员**...
- **HelloWorld**:编程入门的第一个程序,通常用于验证环境是否正确配置。 - **cmake**:一个跨平台的自动化构建工具,可以帮助我们管理项目的构建过程,提高开发效率。 #### 四、程序调试方法 - **调试工具**:...