• 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);
        }
    }        
    复制代码
  • 相关阅读:
    上周热点回顾(12.1212.18)
    上周热点回顾(11.2111.27)
    上周热点回顾(11.1411.20)
    博客园电子期刊2011年11月刊发布啦
    “CDN加速”测试
    上周热点回顾(11.2812.4)
    上周热点回顾(12.1912.25)
    上周热点回顾(12.512.11)
    提醒:安装MS11100 .NET Framework高危漏洞补丁一定要所有服务器一起安装
    郑州公积金
  • 原文地址:https://www.cnblogs.com/s844876674/p/4684470.html
Copyright © 2020-2023  润新知