终于看懂什么叫匿名内部类了,其实就是一句 return new E(){};其他的并不属于匿名内部类 E可以是接口也可也以是抽象类。
觉得内部类,叫“内部接口或抽象类”更形象
//: innerclasses/MultiImplementation.java
// With concrete or abstract classes, inner
// classes are the only way to produce the effect
// of "multiple implementation inheritance."
package innerclasses;
class D {
}
abstract class E {
}
class Z extends D {
E makeE() {
// Anonymous inner class: 就这句E
return new E(){};
}
}
public class MultiImplementation {
static void takesD(D d) {
}
static void takesE(E e) {
}
public static void main(String[] args) {
Z z = new Z();
takesD(z);
takesE(z.makeE());
}
} // /:~