Re: [問題] 一個 java expression 裡有兩個 this
※ 引述《Fenikso (ばかちーは俺の嫁)》之銘言:
: (刪光光)
: class A {
public static void main(String[] args) { new A().new C(); }
A() { System.out.println("A:constructor"); }
: A getA() {
System.out.println("A:getA()");
return this;
}
: class B {
B() { System.out.println("B:constructor"); }
B(int v) { System.out.println("B:constructor (int)"); }
}
: class C extends B {
: C() {
: A.this.getA().super(2);
getA();
A.this.getA();
: }
void getA() { System.out.println("C:getA()"); }
: }
: }
: 兩個this和兩個super的我湊不出來orz
幫你加幾個東西進去, 比較好瞭解 ^^>
這個例子應該可以多加探討
A.this.getA() 與 getA() 有什麼不同可以由此得知
為了在 C 內可以使用 A 的 getA(),
利用 A.this 指定是在 "A的這個" 之下 的 getA()
A.this.getA().super() 或 A.this.getA().super(2)
可以得知是去用了 B (也就是 C 的super class) 的建構式
且分別與
A.this.super() 以及 A.this.super(2)
同義
當然更同義於
super() 以及 super(2)
只是我不明白語意 ><
A.this.getA() 回傳的是 A 型態, 怎麼使用super()時
意義上卻是 B 型態的建構式?
是否有個例子可以說明, 一定要使用 A.this.super() 的用法?
(就像是 A.this.getA()與 getA() 這樣的差異)
--
不過, 以前還真沒想到過要同時使用 this 和 super 的 XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.146.194.91
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 3 之 4 篇):