七、内部类的继承
需要用构造器提供外部类的引用
class Contents{
class InnerContent{
}
}
public class Outer extends Contents.InnerContent{
public Outer(Contents contents) {
contents.super();
}
}
八、内部类的覆盖
class Contents{
private InnerContent innerContent;
class InnerContent{
@Override
public String toString() {
return "Contents.InnerContent";
}
}
public void setInnerContent(InnerContent innerContent) {
this.innerContent=innerContent;
}
public void show() {
System.out.println(innerContent.toString());
}
}
public class Outer extends Contents{
class InnerContent extends Contents.InnerContent{
@Override
public String toString() {
return "Outer.InnerContent";
}
}
public static void main(String[] args) {
Outer outer=new Outer();
outer.setInnerContent(outer.new InnerContent());
outer.show();
}
}
当Outer继承Contents时,内部的InnerContent必须手动继承
九、内部类标识符
非匿名内部类的class文件:外围类名字$内部类名字
匿名内部类的class文件:外围类名字$数字
十、为何使用内部类
主要是可以解决类的多继承问题:)