Javaにおけるメンバー変数の付与と構築方法について

982 ワード

この問題についてはJVMの作業手順で説明すべきであり,まず次のコードを見る.
class X {
		Y b = new Y();
		X() {
			System.out.print("X");
		}
	}
	class Y {
		Y() {
			System.out.print("Y");
		}
	}
	public class Z extends X {
		Y y = new Y();
		Z() {
			System.out.print("Z");
		}
		public static void main(String[] args) {
			new Z();     //    YXYZ
		}
	}

このコードの実行手順は次のとおりです.
  1.スタックメモリで変数を定義するときに初期値となり、メソッドを定義します.基本データ型は0、参照データ型はnull 2である.親構築メソッドを呼び出し、親のプロパティとメソッドを定義します(子が親メソッドを書き換えた場合、上書きされず、プロシージャ全体で上書きされない場合).親の変数に値を割り当てます.(ここでnewはYオブジェクトである).親構築メソッドの他の文を実行します(この場合、独自の変数が初期化され、値が割り当てられています.合理的なようです).自分の変数に値を割り当てる(スタックメモリにオブジェクトまたは定数を作成する)(ここでもnewのYオブジェクトである).構築メソッドの他の文の実行
 
敷物の小さな知識:1つ目:メンバー変数には基本タイプと参照タイプがあります.class Demo{//基本タイプint x=10;//参照タイプStudio s=new Studio()}2つ目:クラスの初期化プロセスclassファイルスタックで開いた空間変数のデフォルト初期化変数をロードする表示初期化構築コードブロック初期化構築方法初期化
3つ目:extendsに遭遇したら、親データを初期化し、サブクラスデータを初期化することを知っておく必要があります.階層初期化superはここで親データを初期化することを示すだけです.