- 内部类可以是abstract和final类型,也可以是接口。类可由其他内部类继承,接口则可由其他的内部类实现。此处讲述内部类继承,内部类继承通常有三种:
一、同一外包类中的内部类之间的继承
如:A.Innerclass_child 继承 A.Innerclass_parent
eg:
class outer{
class inner_1{
public inner(String s){
System.out.println(s);
}
}
class Inner_2 extends inner_1{
Inner_2{
super("Hello");
}
}
public void demo(){
outer o = new outer();
test t = new test();
Inner_2 ti = t.new Inner_2(o);//创建内部类时需要外部类对象引用,才能成功创建
}
}
二、不同外包类的内部类之间的继承
如:B.Innerclass继承A.Innerclass_parent
class outer{
class inner{
public inner(String s){
System.out.println(s);
}
}
}
public class test{
class testInner extends outer.inner{
testInner(outer o){
o.super("Hello");
}
}
public static void main(String[] args){
outer o = new outer();
test t = new test();
outer.testInner ti = o.new inner();//创建内部类时需要外部类对象引用,才能成功创建
}
}
三、一外包类继承另一外包类的内部类
如:B继承A.Innerclass_parent
eg:
class WithInner{
class Inner{
}
}
public class test3 extends WithInner.Inner{
test3(WithInner wi){
wi.super();
}
public static void main(String[] args){
WithInner wi = new WithInner();
test3 t3 = new test3(wi);
}
}
-
在外包类以外的类中声明时:
创建静态内部类对象:外部类类名.内部类类名 引用名=new 外部类构造名.(new) 内部类构造名
创建成员内部类对象:外部类类名.内部类类名 引用名=外部类对象名.new 内部类构造名