美文网首页
内部类的继承问题(基础)

内部类的继承问题(基础)

作者: 998584f56259 | 来源:发表于2016-08-18 10:36 被阅读32次

1、因为内部类的构造器要用到其外围类对象的引用,所以在你继承一个内部类的时候,事情变得有点复杂。问题在于,那个“秘密的”外围类对象的引用必须被初始化,而在被继承的类中并不存在要联接的缺省对象。要解决这个问题,需使用专门的语法来明确说清它们之间的关联:

class WithInner {

class Inner {
        Inner(){
                System.out.println("this is a constructor in WithInner.Inner");
        };
}
}

public class InheritInner extends WithInner.Inner {
// ! InheritInner() {} // Won't compile
InheritInner(WithInner wi) {
        wi.super();
        System.out.println("this is a constructor in InheritInner");
}

public static void main(String[] args) {
        WithInner wi = new WithInner();
        InheritInner ii = new InheritInner(wi);
}
}

/*输出结果为:
this is a constructor in WithInner.Inner
this is a constructor in InheritInner*/

可以看到,InheritInner 只继承自内部类,而不是外围类。但是当要生成一个构造器时,缺省的构造器并不算好,而且你不能只是传递一个指向外围类对象的引用。此外,你必须在构造器内使用如下语法:

enclosingClassReference.super();

这样才提供了必要的引用,然后程序才能编译通过。

相关文章

  • 内部类的继承问题(基础)

    1、因为内部类的构造器要用到其外围类对象的引用,所以在你继承一个内部类的时候,事情变得有点复杂。问题在于,那个“秘...

  • Service 服务

    自定义类 继承Service 内部类继承Binder,内写需要的方法(注意一般Service在UI线程,别左耗时操...

  • 软帝学院:80道java基础部分面试题(一)

    11道java基础部分面试题 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相...

  • Java基础系列之内部类的多重继承与事件回调

    首先说为什么要使用内部类: 1、实现多重继承 2、实现闭包(隐藏关键环节) 3、回调 常见内部类类型 1、非静态内...

  • 软帝学院:80道java基础部分面试题(四)

    Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集...

  • Java面试题知识点

    1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...

  • Java初级面试题

    1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...

  • 基础面试题(Ⅰ)

    问题:Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以i...

  • 内部类

    内部类:可以继承,可以实现接口 内部类,可以使用外部成员,包括私有 外部类,使用内部类成员,必须建立 内部类...

  • day06

    续内部类 10.8 为什么需要内部类 每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某...

网友评论

      本文标题:内部类的继承问题(基础)

      本文链接:https://www.haomeiwen.com/subject/brdvsttx.html