zoukankan      html  css  js  c++  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);
        }
    }        
    复制代码
  • 相关阅读:
    源码安装jdk
    yum操作的一些笔记
    Tomcat笔记
    源码编译安装zabbix server端和agent端
    用nginx做反向代理时 通过设置让后台真实服务器日志记录客户端的IP
    LVS负载均衡的两种调度模式:NAT和DR
    nginx配置文件详解
    FPGA高级设计——时序分析和收敛(转)
    12个有趣的C语言面试题
    LDO稳压器工作原理
  • 原文地址:https://www.cnblogs.com/s844876674/p/4684470.html
Copyright © 2011-2022 走看看