File tree Expand file tree Collapse file tree 1 file changed +9
-40
lines changed Expand file tree Collapse file tree 1 file changed +9
-40
lines changed Original file line number Diff line number Diff line change
1
+ 《《《 [ 返回首页] ( ../README.md ) <br />
2
+ 《《《 [ 上一节] ( ../ch04/00_Declarations.md )
3
+
1
4
## 协变覆盖
2
5
3
6
` Java 5 ` 支持协变方法重写。 这个特性与泛型没有直接关系,但我们在这里提到它,因为它值得了解,并且因为它使用了上一节中描述的桥接技术来实现。
4
7
5
- 在 ` Java 1.4 ` 及更早版本中,只有参数和返回类型完全匹配时,一个方法才能覆盖另一个方法。 在 ` Java 5 ` 中,如果参数类型完全匹配,并且重写方法的返回类型是另一个方法的返回类型的子类型,则方法可以重写另一个方法。
8
+ 在 ` Java 1.4 ` 及更早版本中,只有参数和返回类型完全匹配时,一个方法才能覆盖另一个方法。 在 ` Java 5 ` 中,如果参数类型完全匹配,并且重写方法的返回类型
9
+ 是另一个方法的返回类型的子类型,则方法可以重写另一个方法。
6
10
7
11
` Object ` 类的克隆方法说明了协变覆盖的优点:
8
12
64
68
public bridge java.lang. Object Point . clone()
65
69
```
66
70
67
- 这里桥接技术利用了这样一个事实,即在类文件中,同一类的两个方法可能具有相同的参数签名,尽管这在 ` Java ` 源代码中是不允许的。 桥接方法只是简单地调用第一种方法。 (同样,在撰写本文时,` Sun JVM ` 打印出的是 ` volatile ` 而不是桥。)
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
-
105
-
71
+ 这里桥接技术利用了这样一个事实,即在类文件中,同一类的两个方法可能具有相同的参数签名,尽管这在 ` Java ` 源代码中是不允许的。 桥接方法只是简单地调用第一
72
+ 种方法。 (同样,在撰写本文时,` Sun JVM ` 打印出的是 ` volatile ` 而不是桥。)
106
73
74
+ 《《《 [ 下一节] ( 07_Bridges.md ) <br />
75
+ 《《《 [ 返回首页] ( ../README.md )
You can’t perform that action at this time.
0 commit comments