使用内部类最吸引人的原因是:
每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。
下面的例子:如果拥有的是抽象的类或者是具体的类,而不是接口,那就只能使用内部类才能实现多重继承。
package com.ran.unit8;
class D{}
abstract class E{}
class Z extends D{
E makeE(){
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());
}
}