Re: [軟體] 少用的 constructor 語法
※ 引述《macbuntu (邀怪)》之銘言:
: 剛剛在試一些東西, 才發現 Java 裡如果繼承的 parent class 是
: non-static inner class 而且沒有 default constructor 時,
: 需要用一個奇怪的語法來呼叫 parent constructor:
: class A {
: class B {
: class C {
: public C(int i) {}
: }
: }
: }
: class D extends A.B.C {
: public D() {
: new A().new B().super(123);
: }
: }
: 這種語法用的人應該不多吧? 那個 super() 這樣寫真不直覺...
inner class 在 instantiate 時, 需要
一個 "outer" object.
e.g.
class A {
class B {
}
public void foo() {
new B(); // outer 是 this
}
}
// some other place
A a = new A();
a.new B(); // instantiate B, 其 outer 是 a
D 的 constructor 寫的東西, 大概不止是
為了 invoke super ctor, 而是順道生成其
outer class... 吧?....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
討論串 (同標題文章)