[問題] 介面

看板java作者 (忍所不能忍)時間13年前 (2010/08/31 04:11), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/2 (看更多)
有幾些問題想請問一下各位高手 ~ class A{ private interface D {void f();} public class inner01 implements D { public void f(){System.out.println("inner01");} } public D getD(){ return new inner01();} private D d1; public void recevieD(D d){ d1 = d; d1.f(); } } public class B{ public static void main(String args[]){ A t = new A(); // A.inner01 i1 = t.getD(); // 不太明白為何錯誤 回傳型態的問題?? 請高手幫忙解釋一下 ^^" // t.getD().f(); t.recevieD(t.getD()); }} 輸出結果: " inner01 " 還有 getD() 的 return new inner01() 回傳之後, 是不是會變成 new A().new inner01() ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.46.100.214

08/31 07:39, , 1F
請先敘述自己的解讀中與現象的矛盾點
08/31 07:39, 1F
^^" 第二個問題有點通想了!return new inner01(); 實際上是 return this.new inner01(); (不是很有把握) ^^^^ ↓↓ 呼叫該方法的實體,也就是new A() 第一,回傳 D 型態,但實作上還是指向 inner01! 變成 A.inner01 t = (D)new inner01(); (這只是我自己的想像,沒有這種寫法) 造成 子類別 實作 父類別 (錯誤) 第二,改成 A.D t =t.getD() → 父類別 實作 父類別 (正確) 但 D 介面為 private 權限,所以在這也造成取存失敗 又有問題了 囧" return new inner01() return this.new inner01() return new A().new inner01() 以上三個都確定 return this.new A().new inner01() (錯誤) 所以如果不寫出 this 的話!那是由編譯器自行視情況要不要加 this 嗎??? 不知道我的解讀得幾分 >"< , 請鞭小力一點

08/31 09:32, , 2F
幹嘛搞得這麼亂?
08/31 09:32, 2F

08/31 10:36, , 3F
k大你的亂是指??@@"
08/31 10:36, 3F
※ 編輯: dnzteeqrq 來自: 114.46.100.214 (08/31 10:43)
文章代碼(AID): #1CV11Q-j (java)
討論串 (同標題文章)
以下文章回應了本文
問題
1
1
完整討論串 (本文為第 1 之 2 篇):
問題
2
3
問題
1
1
文章代碼(AID): #1CV11Q-j (java)