Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在爪哇,有没有人';重载和重写方法之间的s-land?_Java_Polymorphism - Fatal编程技术网

Java 在爪哇,有没有人';重载和重写方法之间的s-land?

Java 在爪哇,有没有人';重载和重写方法之间的s-land?,java,polymorphism,Java,Polymorphism,在Java中,在重载方法和重写方法之间是否存在无人地带?我试图在“重载”和“重写”之间找到空间 在一个场景中,我在一个类中放置了两个方法以使它们重载: float my_method(int x, int y) {....} int my_method(int x) {....} 然后,在另一个例子中,我修改了这些方法,并将它们放在两个具有层次关系的不同类中,以使它们被覆盖: void my_method(int x, int y, int z) {....} void my_method(i

在Java中,在重载方法和重写方法之间是否存在无人地带?我试图在“重载”和“重写”之间找到空间

在一个场景中,我在一个类中放置了两个方法以使它们重载:

float my_method(int x, int y) {....}
int my_method(int x) {....}
然后,在另一个例子中,我修改了这些方法,并将它们放在两个具有层次关系的不同类中,以使它们被覆盖:

void my_method(int x, int y, int z) {....}
void my_method(int x, int y, int z) {....}
如何才能使上面编写的方法既不属于重载类别,也不属于重写类别?可能吗?或者,上述说法是否属实

1. Two methods that fail to be overloaded are automatically overridden
2. Two methods athat fail to be overridden are automatically overloaded

还有第三种情况,在这种情况下,子类的方法与超类的方法具有相同的签名,但子类无法访问超类的方法(即,它是私有的或包私有的,而超类位于不同的包中)

在这种情况下,子类的方法不会重写超类的方法。它只是隐藏了它

在超级班:

private void my_method(int x, int y, int z) {....}
在子类中:

// adding @Override here would cause a compilation error
public void my_method(int x, int y, int z) {....}

它怎么能“隐藏”一开始不可见的东西呢?这就是他所谓的“隐藏”的意思。在JavaSE7规范的8.4.9中得到了一些有用的行:如果一个类的两个方法(无论是在同一个类中声明,还是都由一个类继承,或者一个声明,一个继承)如果具有相同的名称,但签名不是重写等效的,则称方法名称重载。这一事实不会造成任何困难,也不会导致编译时错误。返回类型之间或具有相同名称的两个方法的throws子句之间没有必需的关系,除非它们的签名等效。