Java中同一类中的方法重复,使用Eclipse时会被编译

时间:2018-06-24 16:02:41

标签: java eclipse class override

以下代码已成功编译,其中在某个类中,我编写了两个具有相同名称和相同类型签名的方法。我正在使用Eclipse Oxygen 4.7.0,可以看到红色显示的错误Duplicate method show(int,int)。但是,当我编译代码时,它会以正确的输出成功编译。当我使用javac在命令提示符下运行相同的代码时,其有效地不会被编译。

package oops2;

class A6
{
int i, j;

void show(int i, int j)
{
    System.out.println(" i & j : " +i + " " +j);
}

void show(int k, int l)
{
    System.out.println("override or not");
}

void show(String s)

{
    System.out.println("Entered str is "+s);
}
}

public class OverrideNoInherit 
{
public static void main(String[] args) 

{
    // TODO Auto-generated method stub
A6 a = new A6();
a.show(20, 30);
a.show("this is it");   
}

}

在这里,我要提到的是,当我在Eclipse上单击run时,会弹出一个对话框

  

该项目中存在错误,要继续启动吗?

现在,此错误不是意味着同一项目中还有其他类有错误,因此没有被编译。我不认为这意味着尽管代码中有错误,程序仍会被编译。那么警告和错误之间会有什么区别?

1 个答案:

答案 0 :(得分:1)

Eclipse总是编译类。包含错误的方法主体由引发包含该类的编译错误的java.lang.Error的方法替换。这实际上对测试驱动的开发很有用,它使您可以对具有编译错误的类启动测试。即使当前其他某些部分包含错误,也可以测试可编译的方法。

您在这里有一个特殊情况。编译器能够编译该方法的第一次出现,但后来遇到无法添加到类的重复方法。因为第一个方法已经编译,并且尽管发出警告,但在强制执行类的启动时,却看到常规的方法已经成功地进行了编译。