作者snowlike (snowlike)
看板java
標題Re: [問題] inner class和shadow的幾個問題
時間Sat Apr 3 16:45:20 2010
※ 引述《fireballboy (火球男兒)》之銘言:
: public class EnclosingClass {
: private String someMember = "Some Member";
: //製造一個innerclass
: private class InnerClass {
: private String someMember = "Inner Member";
: public void doIt( ) {
: System.out.println(someMember);
: System.out.println(EnclosingClass.this.someMember);
: }
: }
: //主程式
: public static void main(String[] args) {
: //new出inner class
: EnclosingClass outerObj = new EnclosingClass();
: EnclosingClass.InnerClass inner = outerObj.new InnerClass();
: }
: }
首先 new 不是誰的方法,可能因為看法分段錯誤的關係
從宣告的方式來看 EC.IC inner = outerObj.new IC();
//or = new EC().new IC();
 ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ 應該要這樣看才對
那麼可以知道java裡面必須存在外面的 class 後才宣告裡面的 inner class
也就說他們是一對多的關係
除非 inner class 宣告為 static 能夠寫成 = new EC.IC();
再來是 this 標示為當前的參考,採用EC.this存取EC的當前參考
搭配宣告方式應該不難理解
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.184.50
※ 編輯: snowlike 來自: 114.33.184.50 (04/03 16:45)
推 fireballboy:那寫上EC.x和寫上EC.this.x不是都一樣嗎?為什麼this不 04/03 17:16
→ fireballboy:用static呢? 04/03 17:17
→ snowlike:請詢問老師或課本ClassName.member和this.member的差別 04/03 20:51