Java和C#评估方法/函数签名执行覆盖的方式有何不同?在Java中,子和父的两个方法,具有相同的名称和参数,但返回类型不同是一个错误 - 而在C#中它编译得很好。
我是否认为C#将此视为重载,而Java尝试覆盖但只允许覆盖相同的返回类型?
答案 0 :(得分:0)
您在Java中遇到错误,因为返回类型应与原始返回类型兼容。
返回类型不是签名的一部分。但是,当您重写方法时,应该保持返回类型兼容,在Java 5之前,返回类型必须相同。
但是现在(Java 5+)你可以返回原始类型的子类,这叫做Covariant返回类型。