Java vs C#方法/函数返回类型覆盖?

时间:2012-03-03 21:40:16

标签: c# java inheritance

Java和C#评估方法/函数签名执行覆盖的方式有何不同?在Java中,子和父的两个方法,具有相同的名称和参数,但返回类型不同是一个错误 - 而在C#中它编译得很好。

我是否认为C#将此视为重载,而Java尝试覆盖但只允许覆盖相同的返回类型?

1 个答案:

答案 0 :(得分:0)

您在Java中遇到错误,因为返回类型应与原始返回类型兼容。

返回类型不是签名的一部分。但是,当您重写方法时,应该保持返回类型兼容,在Java 5之前,返回类型必须相同

但是现在(Java 5+)你可以返回原始类型的子类,这叫做Covariant返回类型。