JAva子親クラスにおけるコンストラクション関数の特徴
1002 ワード
サブクラスがオブジェクトを構築するときに、サブクラスのコンストラクション関数にアクセスすると、親クラスも実行されます.これは、サブクラスのコンストラクション関数の最初の行にデフォルトの暗黙文、super()があるためです.
なぜサブクラスがインスタンス化されるときに親クラスのコンストラクション関数にアクセスするのですか?これは、子が親を継承し、親のクラス容量(属性)を取得するため、親のコンテンツを使用する前に、親が自分のコンテンツをどのように初期化しているかを確認します.
親に空のパラメータコンストラクション関数が呼び出されていない場合は、サブクラスのコンストラクション関数はsuperで親クラスのコンストラクション関数を呼び出すことを明確にする必要があります.また、サブクラスコンストラクション関数でthisを使用してこのクラスのコンストラクション関数を呼び出すと、superとthisは最初の行でしか定義できないため、superはなくなります.だから一つしかありません.しかし、サブクラスには必ず他のコンストラクション関数が親クラスのコンストラクション関数にアクセスすることが保証されています.
注:super文は、親の初期化が先に完了する必要があるため、サブクラス構築関数の最初の行を定義する必要があります.
実行結果:furun
zi run
なぜサブクラスがインスタンス化されるときに親クラスのコンストラクション関数にアクセスするのですか?これは、子が親を継承し、親のクラス容量(属性)を取得するため、親のコンテンツを使用する前に、親が自分のコンテンツをどのように初期化しているかを確認します.
親に空のパラメータコンストラクション関数が呼び出されていない場合は、サブクラスのコンストラクション関数はsuperで親クラスのコンストラクション関数を呼び出すことを明確にする必要があります.また、サブクラスコンストラクション関数でthisを使用してこのクラスのコンストラクション関数を呼び出すと、superとthisは最初の行でしか定義できないため、superはなくなります.だから一つしかありません.しかし、サブクラスには必ず他のコンストラクション関数が親クラスのコンストラクション関数にアクセスすることが保証されています.
注:super文は、親の初期化が先に完了する必要があるため、サブクラス構築関数の最初の行を定義する必要があります.
/* : */
class Fu
{
Fu()
{
System.out.println("fu run");
}
}
class Zi extends Fu
{
Zi()
{
//super();// 。
System.out.println("zi run");
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
new Zi();
}
}
実行結果:furun
zi run