派生クラスのオブジェクトを作成する場合、コンストラクターの実行順序はどうなりますか?

王林
リリース: 2020-07-08 15:55:21
オリジナル
9539 人が閲覧しました

派生クラス オブジェクトを作成する場合、コンストラクターの実行順序は、基本クラス コンストラクター、派生クラス オブジェクト メンバー コンストラクター、派生クラス自体のコンストラクターになります。オブジェクトが作成されるときのコードの読み込み順序は、静的コード、非静的コード、コンストラクター メソッドです。

派生クラスのオブジェクトを作成する場合、コンストラクターの実行順序はどうなりますか?

#派生クラス オブジェクトを作成する場合、コンストラクターの実行順序は、基本クラス コンストラクター、派生クラス オブジェクトのメンバー コンストラクター、派生クラスのコンストラクターになります。自体。

(推奨チュートリアル:

java 入門プログラム )

詳細な紹介:

オブジェクト作成時のコードの読み込み順序は次のとおりです: 静的コード-->非静的コード -->コンストラクター。

親クラスが継承されている場合、ロード順序は: 親クラスの静的コード --> サブクラスの静的コード --> 親クラス内の非静的コード -- > 親クラスのコンストラクター --> サブクラスの非静的コード --> サブクラスのコンストラクター。

このうち、静的コードには(静的メソッド、静的変数、静的コードブロックなど)、非静的コードには(メンバメソッド、メンバ変数、メンバコードブロックなど)が含まれます。ロードの上に書かれたコード。

(ビデオ チュートリアルの推奨:

java ビデオ チュートリアル)

例:

public class ExtendsTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		C c = new D();
	}

}

class C {
	static {
		System.out.println("C 基类静态域 ");
	}
	{
		System.out.println("C 基类对象成员构造函数");
	}

	public C() {
		System.out.println("C 基类本身的构造函数");
	}
}

class D extends C {
	static {
		System.out.println("D 派生类静态域");
	}
	{
		System.out.println("D 派生类对象成员构造函数");
	}

	public D() {
		System.out.println("D 派生类本身的构造函数");
	}
}
ログイン後にコピー

出力結果:

# #

以上が派生クラスのオブジェクトを作成する場合、コンストラクターの実行順序はどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!