使用this關鍵字獲取內部類與外部類對象的引用
在實際工作中,應該盡量避免這種情況。即在定義變量名字的時候,內部類中的變量名字盡量不要與外部類中的變量名字相同。但是如果真的發生這種情 況的話,Java編譯器還是有手段可以解決這個變量名字的沖突問題。如果在類中的成員內部類中遇到成員變量名字與外部類中的成員變量名字相同,則可以通過 使用this關鍵字來加以區別。如現在有一個類名字叫做student。而在這個類中又創建了一個成員內部類,名字叫做age。現在在這兩個類中各自定義 了一個成員變量i,用來做循環之用。此時如果在成員內部類中調用這個變量,該如何進行區分呢?通常情況下,如果使用this.i 的方式來調用變量,則表示這個變量是成員內部類中定義的變量。而通過使用student.this.i的形式調用變量時表示此時引用的是外部類的成員變 量。也就是說,如果內部類中引用外部類中同名的成員,需要通過外部類迷名字.this.外部類成員名字的方式加以引用。而且,在引用成員內部類自己的定義 的成員時也需要使用this關鍵字,以加以區別。顯然這非常的麻煩。為此筆者仍然要強調一遍,除非有非常特殊的必要,否則的話要盡量避兩外部類與成員內部 類中成員變量或者成員方法采用相同的名字。否則的話,會給后續的引用帶來很大的麻煩。
程序:
1 public class Test { 2 public int a = 1; 3 4 public class Tes { 5 public int a = 3; 6 7 public void out() { 8 System.out.println("內部類的a值:" + a); 9 System.out.println("外部類的a值:" + Test.this.a); 10 } 11 } 12 13 public Test() { 14 new Tes().out(); 15 } 16 17 public static void main(String[] args) { 18 new Test(); 19 20 } 21 }
運行結果:
內部類的a值:3 外部類的a值:1