Java 當類的屬性與形參的名字相同時

當類的屬性和類方法的形參名字相同時,類方法裏面的變量是指向類屬性還是類方法的形參呢?

這是我剛剛偶爾發現的問題,特地研究了一下。

例如,我現在寫一個Test類:(注意:這裏沒有用this.count,因爲this.count是肯定指向類屬性的。)

<span style="font-size:18px;">public class Test {

	
	public static void main(String[] args) {
		SecondClass secondClass=new Test.SecondClass(100);
		System.out.println(secondClass.count);
		System.out.println(secondClass.second);
	}
	static class SecondClass{
		int count=1;
		int second=0;
		public SecondClass(int count) {
			count=count;	//左部count是哪個?右部count又是哪個?
			second=count;	//調用的是哪個count?
		}
	}

}</span>

當形參編程mCount的時候呢?

static class SecondClass{
		int count=1;
		int second=0;
		public SecondClass(int mCount) {
			count=count;	
			second=count;	
		}
	}

第一段代碼的運行結果是:

count=1
second=100

得到的結果是,類屬性count並沒有被類方法調用,而second=count;語句調用的是形參。

第二段代碼的運行結果是:

count=1
second=1

得到的結果說明,在沒有類屬性跟類方法的形參重名的情況下,調用的纔是類屬性。

所以,在重名情況下,類方法的形參優先級比類屬性更高!這就告誡我們,當調用類屬性的時候,儘量使用this.變量!這樣纔不易造成混亂…保持良好的變成習慣,嗯!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章