私はJava(とOOP)を学んでいて、なぜ私のクラスが期待どおりに動作していないのか理解できません。私はスーパークラス 'MyFirstJavaClass'とMyFirstJavaClassを拡張するサブクラス 'Test'を持っています。 MyFirstJavaClassには、パブリックアクセスが指定された3つのメンバ変数があります。それらはint x、y、zです。 MyFirstJavaClass内の唯一のコンストラクタは、メンバ変数を初期化するために3つの引数をとります。また、サブクラスTestは、継承されたメンバ(x、y、z)とそれが定義する1つのmeber変数(int固有)を初期化する3つの引数を取るコンストラクタも実装します。ここでは、コードは次のとおりです。スーパークラスコンストラクタ内のすべての文が実行されないのはなぜですか?
MyFirstJavaClass:
class MyFirstJavaClass {
int x, y, z;
MyFirstJavaClass(int a, int b, int c) {
System.out.println("Hey! I am the superclass constructor");
x = a;
y = b;
z = c;
}
public static void main(String args[]) {
Test t = new Test(12, 25, 37);
}
}
テスト:私を混乱させる
class Test extends MyFirstJavaClass {
int specific;
Test(int a, int b, int c)
{
super(a, b, c);
System.out.println("Hey! I am the subclass constructor");
specific = 79;
}
}
シングは、MyFirstJavaClassコンストラクタで出力文が実行されていないということです。指定された値に、私はそれが継承されている変数を初期化するため、スーパークラスのコンストラクタが呼び出されると確信してい
Hey! I am the subclass constructor
:私のような何かを出力することを期待:
Hey! I am the superclass constructor
Hey! I am the subclass constructor
しかし、私が得ることですTestオブジェクトを作成します。なぜ出力文が実行されなかったのですか?
携帯電話でこの質問を入力しているため、コンパイル時にエラーが発生することがあります。私の元のクラスには何の誤りもないと確信しています。
実行したコードに実際に2つのprint文があることは確かですか?また、あなたが私たちに示したprintステートメントの両方がスーパークラスのコンストラクタを参照していることにも気づいていますか? –
申し訳ありませんキーボードのヒントは私を混乱させる。質問が編集されました。 –
パッケージおよびその他のコンストラクタと展開プロセスの再確認。また、デバッガを使用して、ステップごとに追跡することができます。 – Leo