Javaにおけるクラスのロード順序を詳しく解説

高洛峰
リリース: 2017-01-13 09:10:11
オリジナル
1158 人が閲覧しました

この記事では、Java のクラスのロード シーケンスを紹介します。詳しく見てみましょう:

1. 仮想マシンは初めて Java クラスをロードするときに、静的な初期化ブロックを実行します。初期化

2. 新しいメソッドが呼び出された場合にのみクラスのインスタンスが作成されます

3. クラスインスタンスの作成プロセス: 親に従って初期化が実行されます。 -子の継承関係では、最初に親クラスの初期化ブロック部分を実行し、次に親クラスの構築メソッドを実行し、次にこのクラスが継承するサブクラスの初期化ブロックを実行し、最後にサブクラスの構築メソッドを実行します

4. クラスインスタンスが破棄されるときは、最初にサブクラス部分を破棄し、次に親クラス部分を破棄します

Example

<span style="font-size: 14px;">public class Parent<br/>{<br/> public static int t = parentStaticMethod2();<br/> {<br/> System.out.println("父类非静态初始化块");<br/> }<br/> static<br/> {<br/> System.out.println("父类静态初始化块");<br/> }<br/> public Parent()<br/> {<br/> System.out.println("父类的构造方法");<br/> }<br/> public static int parentStaticMethod()<br/> {<br/> System.out.println("父类类的静态方法");<br/> return 10;<br/> }<br/> public static int parentStaticMethod2()<br/> {<br/> System.out.println("父类的静态方法2");<br/> return 9;<br/> }<br/> <br/> @Override<br/> protected void finalize() throws Throwable<br/> {<br/> // TODO Auto-generated method stub<br/> super.finalize();<br/> System.out.println("销毁父类");<br/> }<br/> <br/>}<br/>public class Child extends Parent<br/>{<br/> {<br/> System.out.println("子类非静态初始化块");<br/> }<br/> static<br/> {<br/> System.out.println("子类静态初始化块");<br/> }<br/> public Child()<br/> {<br/> System.out.println("子类的构造方法");<br/> }<br/> public static int childStaticMethod()<br/> {<br/> System.out.println("子类的静态方法");<br/> return 1000;<br/> }<br/> @Override<br/> protected void finalize() throws Throwable<br/> {<br/> // TODO Auto-generated method stub<br/> super.finalize();<br/> System.out.println("销毁子类");<br/> }<br/>}<br/>public class Test<br/>{<br/> <br/> public static void main(String[] args)<br/> {<br/> // TODO Auto-generated method stub<br/> Parent.parentStaticMethod();<br/>// Child child = new Child();<br/> <br/> }<br/><br/>}<br/></span>
ログイン後にコピー

Output

<span style="font-size: 14px;">父类的静态方法2<br/>父类静态初始化块<br/>父类类的静态方法<br/></span>
ログイン後にコピー

クラス内の静的メソッドは最初にロードされますこれらは呼び出され、クラス内の静的メンバーは、クラス内に出現する順序でロードされます。静的メソッド 2 が呼び出されると、出力

<span style="font-size: 14px;">父类的静态方法2<br/>父类静态初始化块<br/>父类的静态方法2<br/></span>
ログイン後にコピー

コメントアウト Parent.parentStaticMethod();

Uncomment Child child = new Child();

<span style="font-size: 14px;">父类的静态方法2<br/>父类静态初始化块<br/>子类静态初始化块<br/>父类非静态初始化块<br/>父类的构造方法<br/>子类非静态初始化块<br/>子类的构造方法<br/></span>
ログイン後にコピー

概要

この記事は以上ですこの記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご不明な点がございましたら、メッセージを残してご連絡ください。

Java のクラスのロード順序に関する詳細な記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート