次の Java コードが Eclipse で実行されると、正しい出力が得られます (つまり、'Class B' が出力されます) が、Java 仕様によれば、コードはコンパイルできません (スーパー クラス コンストラクターにはint
引数と、によって提供されるコンストラクターが必要なため)。クラス B へのコンパイラには、定義されていないスーパー クラス no 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");
}
}
biengがクラスをコンパイルできなくても、Eclipseがメインメソッドを実行する方法を誰かが説明できますか? 前もって感謝します。
アップデート
binフォルダにあるeclipseで作成した.classファイルを削除してクラスを実行しようとしたところ、コンパイルできず実行されませんでした。しかし、パブリッククラス名でソースファイルを作成し、コンテンツなしで保存してから、上記のコンテンツを追加すると、機能しました。Eclipse が以前にコンパイルされたバージョンを使用して実行する場合、完全なコンパイルが成功した時点でメソッドmain
がなかったため、どのようにしてメソッドの出力を得ることができますか?main