[問題] 介面
有幾些問題想請問一下各位高手 ~
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
08/31 10:36, 3F
※ 編輯: dnzteeqrq 來自: 114.46.100.214 (08/31 10:43)
討論串 (同標題文章)