我对如何在子类中创建方法感到困惑。我的头撞到了砖墙上,甚至不知道如何表达这个问题。
import java.io.*;
public class A {
public double method1(double x, double y) { return 1.0; }
}
class B extends A {
//subclass method to be placed after this line
}
<小时/>
public double method1(double x, double y) { ... }
public int method1(double x, double y) { ... }
public double method1(int x, int y) { .... }
public int method1(double x, double y, double z) { ... }
以下哪种方法在子类中是合法的,为什么?
最佳答案
使用新功能覆盖方法1。
非法,因为它具有相同的参数签名但返回类型不同。
3,4。合法但实际上是不同的方法。
只需将参数类型视为方法名称的一部分即可:
仅当名称加上参数类型完全匹配时,您才能使用新功能重写相同的方法。在这种情况下,返回类型必须匹配(从Java 1.5开始,返回类型可能在子类中专门化,参见 https://blogs.oracle.com/sundararajan/entry/covariant_return_types_in_java )
在其他情况下,添加的方法只是具有相同名称的单独方法。 Java 在编译时根据提供的参数类型静态地为每次调用选择正确的参数类型。如果参数兼容并且多个方法的名称相同,它将选择最接近的匹配。
关于java - 以下哪种方法在子类中是合法的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890249/