Java代码:
class P {
public void hello() {}
}
class C extends P {
public void hello(String s) {}
}
我的问题是:类中的 hello
C
重载了超类中同名的 P
?58bb–
我的朋友说他们不是因为他们不在同一个班级。
原文由 Freewind 发布,翻译遵循 CC BY-SA 4.0 许可协议
Java代码:
class P {
public void hello() {}
}
class C extends P {
public void hello(String s) {}
}
我的问题是:类中的 hello
C
重载了超类中同名的 P
?58bb–
我的朋友说他们不是因为他们不在同一个班级。
原文由 Freewind 发布,翻译遵循 CC BY-SA 4.0 许可协议
简单说明:
我认为出现这个问题是因为有时我们会听到以下内容,
” 方法重载是在类内部进行的。方法重载发生在有继承关系的两个类中。 “
上面的说法是正确的。但是你的朋友错了。为什么?
因为当你扩展一个类时,子类拥有超类定义的所有方法。 就好像超类的所有方法都被子类实现了一样。 这意味着 hello() 方法也已由类 C 实现。现在,您在类 C 中添加了一个具有不同参数的方法 (hello(String s))。也就是说,C类一共有两个同名不同参数的方法,这就是“ 重载”。
希望它是透明的。
原文由 Jatin Lalwani 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
采用更正式的方法,Java 7 的 Java 语言规范指出:
http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.4.9
我会将您的朋友指向此链接。
因此,简而言之,在您的示例中, hello 方法确实重载了。