作者adrianshum (Alien)
看板java
标题Re: [软体] 少用的 constructor 语法
时间Fri Mar 6 16:17:56 2009
※ 引述《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