@@ -690,9 +690,9 @@ doh(Milhouse)
690
690
691
691
````
692
692
693
- ** Homer** 的所有重载方法在 ** Bart** 中都是可用的,尽管 ** Bart** 引入了一种新的重载方法。正如你将在下一章中看到的那样,比起重载,更常见的是覆盖同名方法,使用与基类中完全相同的方法签名[ ^ 1 ] 和返回类型。否则会让人感到困惑。
693
+ ** Homer** 的所有重载方法在 ** Bart** 中都是可用的,尽管 ** Bart** 引入了一种新的重载方法。正如你将在下一章中看到的那样,比起重载,更常见的是覆盖同名方法,使用与基类中完全相同的方法签名[ ^ 2 ] 和返回类型。否则会让人感到困惑。
694
694
695
- 你已经看到了Java 5 ** @Override ** 注解,它不是关键字,但是可以像使用关键字一样使用它。当你打算重写一个方法[ ^ 2 ] 时,你可以选择添加这个注解,如果你不小心用了重载而不是重写,编译器会产生一个错误消息:
695
+ 你已经看到了Java 5 ** @Override ** 注解,它不是关键字,但是可以像使用关键字一样使用它。当你打算重写一个方法[ ^ 3 ] 时,你可以选择添加这个注解,如果你不小心用了重载而不是重写,编译器会产生一个错误消息:
696
696
697
697
698
698
``` java
@@ -712,12 +712,7 @@ class Lisa extends Homer {
712
712
713
713
** {WillNotCompile}** 标记将该文件排除在本书的 ** Gradle** 构建之外,但是如果你手工编译它,你将看到: method does not override a method from its superclass.方法不会重写超类中的方法, ** @Override ** 注解能防止你意外地重载。
714
714
715
- - ** [ 1] ** 方法签名——方法名和参数类型的合称
716
-
717
- - ** [ 2] ** 重写——覆盖同名方法,使用与基类中完全相同的方法签名和返回类型[ ^ 3 ]
718
-
719
- - ** [ 3] ** 在java 1.4版本以前,重写方法的返回值类型被要求必须与被重写方法一致,但是在java 5.0中放宽了这一个限制,添加了对协变返回类型的支持,在重写的时候,重写方法的返回值类型可以是被重写方法返回值类型的子类。
720
-
715
+
721
716
<!-- Choosing Composition vs. Inheritance -->
722
717
723
718
## 组合与继承的选择
@@ -1182,8 +1177,6 @@ Java 标准类库就是一个很好的例子。尤其是 Java 1.0/1.1 的 **Vect
1182
1177
1183
1178
Java 1.0/1.1 标准类库中另一个重要的类是 ** Hashtable** (后来被 ** HashMap** 取代),它不含任何 ** final** 方法。本书中其他地方也提到,很明显不同的类是由不同的人设计的。** Hashtable** 就比 ** Vector** 中的方法名简洁得多,这又是一条证据。对于类库的使用者来说,这是一个本不应该如此草率的事情。这种不规则的情况造成用户需要做更多的工作——这是对粗糙的设计和代码的又一讽刺。
1184
1179
1185
- - ** [ 1] ** Java 1.4 开始已将 ** Vector** 类大多数方法的 ** final** 去掉
1186
-
1187
1180
<!-- Initialization and Class Loading -->
1188
1181
1189
1182
## 类初始化和加载
@@ -1267,6 +1260,15 @@ j = 39
1267
1260
1268
1261
当开始设计一个系统时,记住程序开发是一个增量过程,正如人类学习。它依赖实验,你可以尽可能多做分析,然而在项目开始时仍然无法知道所有的答案。如果把项目视作一个有机的,进化着的生命去培养,而不是视为像摩天大楼一样快速见效,就能获得更多的成功和更迅速的反馈。继承和组合正是可以让你执行如此实验的面向对象编程中最基本的两个工具。
1269
1262
1263
+ [ ^ 1 ] : Java 1.4 开始已将 ** Vector** 类大多数方法的 ** final** 去掉
1264
+
1265
+ [ ^ 2 ] : 方法签名——方法名和参数类型的合称
1266
+
1267
+ [ ^ 3 ] : 重写——覆盖同名方法,使用与基类中完全相同的方法签名和返回类型[ ^ 4 ]
1268
+
1269
+ [ ^ 4 ] : 在java 1.4版本以前,重写方法的返回值类型被要求必须与被重写方法一致,但是在java 5.0中放宽了这一个限制,添加了对协变返回类型的支持,在重写的时候,重写方法的返回值类型可以是被重写方法返回值类型的子类。
1270
+
1271
+
1270
1272
<!-- 分页 -->
1271
1273
1272
1274
<div style =" page-break-after : always ;" ></div >
0 commit comments