用類名定義一個(gè)變量的時(shí)候,定義的只是一個(gè)引用,外面可以通過這個(gè)引用來訪問這個(gè)類里面的屬性和方法。
那們類里面是夠也應(yīng)該有一個(gè)引用來訪問自己的屬性和方法納?
呵呵,Java提供了一個(gè)很好的東西,就是 this 對象,它可以在類里面來引用這個(gè)類的屬性和方法。先來個(gè)簡單的例子:
1
2
3
4
5
6
7
8
9
10
11
|
public class ThisDemo { String name= "Mick" ; public void print(String name){ System.out.println( "類中的屬性 name=" + this .name); System.out.println( "局部傳參的屬性=" +name); } public static void main(String[] args) { ThisDemo tt= new ThisDemo(); tt.print( "Orson" ); } } |
關(guān)于返回類自身的引用,《Thinking in Java》有個(gè)很經(jīng)典的例子。
通過this 這個(gè)關(guān)鍵字返回自身這個(gè)對象然后在一條語句里面實(shí)現(xiàn)多次的操作,還是貼出來。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class ThisDemo { int number; ThisDemo increment(){ number++; return this ; } private void print(){ System.out.println( "number=" +number); } public static void main(String[] args) { ThisDemo tt= new ThisDemo(); tt.increment().increment().increment().print(); } } |
一個(gè)類中定義兩個(gè)構(gòu)造函數(shù),在一個(gè)構(gòu)造函數(shù)中通過 this 這個(gè)引用來調(diào)用另一個(gè)構(gòu)造函數(shù),這樣應(yīng)該可以實(shí)現(xiàn)。
這樣的實(shí)現(xiàn)機(jī)制在實(shí)際做應(yīng)用開發(fā)的時(shí)候有會(huì)有什么樣子的用處納?貼下寫的代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public class ThisDemo { String name; int age; public ThisDemo (){ this .age= 21 ; } public ThisDemo(String name, int age){ this (); this .name= "Mick" ; } private void print(){ System.out.println( "最終名字=" + this .name); System.out.println( "最終的年齡=" + this .age); } public static void main(String[] args) { ThisDemo tt= new ThisDemo( "" , 0 ); //隨便傳進(jìn)去的參數(shù) tt.print(); } } |
看上面這段代碼雖然很短,理解起來似乎也很順理成章,在有參數(shù)的構(gòu)造函數(shù)中賦值 name 在無參數(shù)的當(dāng)中賦值age屬性。
但我個(gè)人覺得其中有點(diǎn)問題,實(shí)例化一個(gè)類應(yīng)該先為對象 ThisDemo 分配內(nèi)存,先調(diào)用構(gòu)造函數(shù) ThisDemo(String name,int age)。
執(zhí)行第一行時(shí),調(diào)用 ThisDemo()構(gòu)造函數(shù),也就是說這里應(yīng)該會(huì)有兩個(gè)內(nèi)存空間的,一個(gè)是為ThisDemo(String name,int age) 分配的內(nèi)存空間和另一個(gè)是 ThisDemo() 執(zhí)行空間。
為什么最后打印出來的結(jié)果是都實(shí)例化了一個(gè)對象中的兩個(gè)屬性name和age納?請大牛賜教!
總結(jié)一下:
1) this 關(guān)鍵字是類內(nèi)部當(dāng)中對自己的一個(gè)引用,可以方便類中方法訪問自己的屬性;
2)可以返回對象的自己這個(gè)類的引用,同時(shí)還可以在一個(gè)構(gòu)造函數(shù)當(dāng)中調(diào)用另一個(gè)構(gòu)造函數(shù)。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/qq_37267015/article/details/54289670