詳細講解方法重寫的注意事項,子類與父類代碼的執行順序

public class Test
{

	public void changValue(String str)
	{
		str="xyz";
	}
	public static void main(String[] args)
	{
		String str="abc";
		Test test= new Test();
		test.changValue(str);
		System.out.println(str);

	}

}



打印“abc”



public class Test
{
	private static Test test = new Test();

	public static int count1;
	public static int count2 = 0;

	private Test()
	{
		count1++;
		count2++;
	}

	public static Test getInstance()
	{
		return test;
	}

	public static void main(String[] args)
	{
		System.out.println(Test.count1);
		System.out.println(Test.count2);

	}
}
打印1、0

這是因爲靜態變量的初始化順序是按照代碼順序來進行的。一開始count1、count2在經過構造方法處理後的值都是1,接着count1沒有進行再次賦值,往下執行到count2再次賦值成0.


<span style="font-size:10px;">public class Test
{
	public static void main(String[] args)
	{
		new Child();
	}
}

class Parent
{
	static String name1 = "hello";

	static
	{
		System.out.println("Parent static block");
	}

	public Parent()

	{
		System.out.println("Parent construct block");
	}
}

class Child extends Parent
{
	static String name2 = "hello";

	static
	{
		System.out.println("Child static block");
	}

	public Child()

	{
		System.out.println("Child construct block");
	}
}</span>

打印:

Parent static block
Child static block
Parent construct block
Child construct block

說明先初始化父類的靜態屬性在執行自己的靜態屬性,再是父類的構造方法再是自己的構造方法。



發佈了33 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章