在eclipse中执行以下java代码时,会得到正确的输出(即打印出“Class B”),但根据Java规范,该代码无法编译(因为超类构造函数需要一个
有人可以解释一下eclipse如何在无法编译类的情况下执行主方法吗?提前谢谢。
更新:我删除了eclipse在bin文件夹中创建的.class文件并尝试执行该类,但它无法编译,因此无法运行。但是当我创建一个具有公共类名称并保存不带任何内容的源文件,然后添加上述内容时,它可以工作。如果eclipse使用先前编译的版本来执行,则它如何给出main方法的输出,因为在成功编译时它没有main方法?
int
参数,编译器提供给类B的构造函数包含对超类无参构造函数的调用,但未定义这个构造函数)。尝试使用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如何在无法编译类的情况下执行主方法吗?提前谢谢。
更新:我删除了eclipse在bin文件夹中创建的.class文件并尝试执行该类,但它无法编译,因此无法运行。但是当我创建一个具有公共类名称并保存不带任何内容的源文件,然后添加上述内容时,它可以工作。如果eclipse使用先前编译的版本来执行,则它如何给出main方法的输出,因为在成功编译时它没有main方法?