专栏首页架构之路Java内部类的继承

Java内部类的继承

Java内部类的构造器必须连接到指向其外围类对象的引用(构造内部类必须给它一个外部类对象的引用,内部类依赖于外部类对象),所以在继承内部类的时候,需要在导出类的构造器中手动加入对基类构造器的调用。

因为,在导出类实例化时,并不存在一个外围类对象,以让导出类的实例去连接到它。

所以,我们需要创建一个外围类,然后用一个特定的语法来表明内部类与外围类的关系。

在下例子中,需要给导出类InheritInner一个来自内部类的外围类中的引用。普通的继承,只需在导出类构造器中加入super();,而内部类则需要外围类对象引用.super();

 1 class WithInner{
 2     class Inner{}
 3 }
 4 public class InheritInner extends WithInner.Inner{
 5     InheritInner(WithInner wi){
 6         wi.super(); //wi的父类是object
 7     }
 8     public static void main(String[] args){
 9         WithInner wi = new WithInner();
10         InheritInner ii = new InheritInner(wi);
11     }
12 }

而进一步,当被继承的内部类只有非默认构造器时应该怎么办呢?

class WithInner{
    class Inner{
        public Inner(int i){
            System.out.println(i);
        }
    }
}
public class InheritInner extends WithInner.Inner{
    InheritInner(WithInner wi){
        int i=0;
        wi.super(i);//如代码所示,当被继承的构造器需要参数时,应把参数传递给这个super函数
    }
    public static void main(String[] args){
        WithInner wi = new WithInner();
        InheritInner ii = new InheritInner(wi);
    }
}        

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • #if和#ifdef的区别

    #if的使用说明 #if的后面接的是表达式 #if (MAX==10)||(MAX==20) code... #endif 它的作用是:如果(MAX==10)...

    老白
  • 超清晰的makefile解释、编写与示例

    Makefile范例教学 Makefile和GNU make可能是linux世界里最重要的档案跟指令了。编译一个小程式,可以用简单的command来进行编译;稍...

    老白
  • Java子类的父类和要实现的接口有相同的方法/函数会冲突吗

    答案是,不会。子类优先实现父类的方法,虽然父类的方法和接口的方法长得一模一样。 class father{ public void f(){} } in...

    老白
  • Android MVP 构架封装

    上一篇我们简单实现了一个MVP的构架,下面我们来做一个简单的封装使其使用更简单方便

    Javen
  • 【选择题】Java基础测试八(16道)

    【选择题】Java基础测试八(16道) 101.下面哪个流类属于面向字符的输入流( D ) A)BufferedWriter ...

    奋斗蒙
  • 分布式柔性事务之事务消息详解

    在 《柔性事务之TCC详解》 和《柔性事务之Saga详解》两文中我们详细剖析了柔性事务的第一个分支补偿型事务。在《刚性事务总结和柔性事务概述》中我们介绍过的柔性...

    孙玄@奈学教育
  • 分布式柔性事务之事务消息详解

    在 《柔性事务之TCC详解》 和《柔性事务之Saga详解》两文中我们详细剖析了柔性事务的第一个分支补偿型事务。在《刚性事务总结和柔性事务概述》中我们介绍过的柔性...

    江帅帅
  • 分布式架构设计篇(十)-柔性事务之事务消息详解

    ​ 在 《柔性事务之TCC详解》 和《柔性事务之Saga详解》两文中我们详细剖析了柔性事务的第一个分支补偿型事务。在《刚性事务总结和柔性事务概述》中...

    林淮川
  • 附近的小程序知识盘点

    说起附近小程序,大家可能还不太了解。下面木鱼小铺就和大家分享一下附近的小程序小知识点,希望对大家有所帮助!

    木鱼小铺
  • day63_SpringMVC学习笔记_01

    (1)使用eclipse,创建一个动态的web工程   其中Dynamic web module version版本选择 2.5,这样兼容性好一些;   Def...

    黑泽君

扫码关注云+社区

领取腾讯云代金券