在eclipse中执行以下java代码时,它给出了正确的输出(即打印'Class B'),但是根据java规范,无法编译代码(因为超类构造函数需要一个int
参数并且构造函数由对 B 类的编译器包括对未定义的超类无 arg 构造函数的调用),当尝试在命令行中使用 javac 命令编译文件时,它只编译超类,即 A 类,并因以下编译而失败错误:
B.java:8: cannot find symbol
symbol : constructor A()
location: class A
public class B extends A {
^
1 error
以下是java文件内容:
class A {
public A(int x) {
//
}
}
public class B extends A {
public static void main(String[] args) {
System.out.println("Class b");
}
}
有人可以解释 eclipse 如何在 bieng 无法编译类的情况下执行 main 方法。提前致谢。
更新
我删除了bin文件夹中eclipse创建的.class文件并尝试执行该类,但无法编译,因此没有运行。但是当我创建一个带有公共类名的源文件并保存时没有任何内容,然后添加上面的内容,它就起作用了。如果eclipse使用之前编译的版本来执行,怎么能给出方法的输出呢,因为在编译成功的时候main
没有方法呢?main