1. 継承の初期化シーケンス
1. 親クラスを初期化してから、サブクラスを初期化します。
2. まずオブジェクト内のプロパティの初期化を実行し、次にコンストラクター メソッド内で初期化を実行します。
2. 以下では、この問題を説明するために簡単な例を使用します:
親クラス: 動物コード:
package com.bluesky; public class Animal { public Animal(){ System.out.println("动物类的构造方法执行了!"); } }
サブクラス: 犬コード:
package com.bluesky; public class Dog extends Animal { public Dog(){ System.out.println("子类的构造函数执行了!"); } }
テストクラス: テストコード:
package com.bluesky; public class Test { public static void main(String[] args) { Dog dog = new Dog(); } }
実行結果:
上記の説明では、最初に親クラスのコンストラクターを実行し、次にサブクラスのコンストラクターを実行します。
次に、属性とコンストラクターの実行順序を確認するために少しコードを追加しましょう
親クラス: Animal コード:
package com.bluesky; public class Animal { public int age=10; //如果构造方法先执行,属性后执行,则age的值应该为:10; //因为后面赋值会覆盖前面的赋值 public Animal(){ age=20; //同理 System.out.println("动物类的构造方法执行了!"); } }
サブクラス: Dog クラス コード:
package com.bluesky; public class Dog extends Animal { public String name="Jack"; //如果构造方法先执行,属性后执行,则name的值应该为:Jack; //因为后面赋值会覆盖前面的赋值 public Dog(){ name="Rose"; System.out.println("子类的构造函数执行了!"); } }
テスト クラス: テスト コード:
package com.bluesky; public class Test { public static void main(String[] args) { Dog dog = new Dog(); System.out.println("dog.age="+dog.age); System.out.println("dog.name="+dog.name); } }
Running結果:
まとめ: Java における継承の初期化シーケンスについて:
まず親クラスのオブジェクトの属性を初期化し、次に親クラスのコンストラクターを初期化します。
次に、サブクラス オブジェクトの属性を初期化し、最後にサブクラスのコンストラクターを初期化します。
上記は Java の継承初期化シーケンスの内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) を参照してください。