14

サブクラスのオブジェクトを作成すると、サブクラスの継承元であるスーパークラスのオブジェクトも作成されますか? そうでない場合は、(マルチスレッドで) Thread クラスのサブクラスを作成して、Thread クラスのコンストラクターを呼び出し、Thread オブジェクトを作成する方法を教えてください。

4

6 に答える 6

2

オブジェクトを作成すると、すべてのデータを保持するために、1 つの変数セットを含む 1 つのメモリが取得されます。

サブクラスには、子のフィールドとその祖先のフィールドが含まれます。つまり、子とその先祖のように振る舞う単一のオブジェクトです。サブクラスを作成するときに作成される親クラス オブジェクトはありません。

于 2013-05-11T14:47:08.400 に答える
0

ここで私はその例で省略しています

子クラス オブジェクトを作成すると、自動的にスーパー クラス オブジェクトが作成されますか?

class P{
  P(){
   System.out.println(this.hashCode()); // it will print 2430287
  }
}

class C extends P{
   C(){
     System.out.println(this.hashCode());   // it will also print 2430287
    }
}

public class Test{

   public static void main(String... args){
        C obj = new C();
        System.out.println(c.hashCode());   //Again, it will print 2430287
   }     
}

このコードをコンパイルして実行すると、同じオブジェクトhashCodeが出力されていることがわかります。したがって、これは作成されるオブジェクトが 1 つだけであることを意味します。

では、親クラス オブジェクトはどのように初期化されているのでしょうか。

この例では、子クラスのインスタンスである 1 つのオブジェクトのみが作成されますが、2 つのコンストラクター (親と子) が実行されます。しかし、コンストラクターは子クラスのみのコンテキストにあります。

于 2016-04-09T05:05:21.677 に答える
-1

いいえ。親クラスのインスタンスは作成されません。しかし、確かにインスタンスが作成されます。そして、オブジェクト参照が子クラスに渡されます。したがって、インスタンスは親クラスで作成され、子クラスのコンストラクターによって呼び出されます。子クラスのメソッドが動作します。

于 2016-10-23T06:46:18.927 に答える