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+
14## 协变覆盖
25
36` Java 5 ` 支持协变方法重写。 这个特性与泛型没有直接关系,但我们在这里提到它,因为它值得了解,并且因为它使用了上一节中描述的桥接技术来实现。
47
5- 在 ` Java 1.4 ` 及更早版本中,只有参数和返回类型完全匹配时,一个方法才能覆盖另一个方法。 在 ` Java 5 ` 中,如果参数类型完全匹配,并且重写方法的返回类型是另一个方法的返回类型的子类型,则方法可以重写另一个方法。
8+ 在 ` Java 1.4 ` 及更早版本中,只有参数和返回类型完全匹配时,一个方法才能覆盖另一个方法。 在 ` Java 5 ` 中,如果参数类型完全匹配,并且重写方法的返回类型
9+ 是另一个方法的返回类型的子类型,则方法可以重写另一个方法。
610
711` Object ` 类的克隆方法说明了协变覆盖的优点:
812
6468 public bridge java.lang. Object Point . clone()
6569```
6670
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 ` 而不是桥。)
10673
74+ 《《《 [ 下一节] ( 07_Bridges.md ) <br />
75+ 《《《 [ 返回首页] ( ../README.md )
You can’t perform that action at this time.
0 commit comments