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);
        }
    }        
    复制代码
  • 相关阅读:
    git版本回退:git reset --hard 版本号
    cheerio中文文档
    疫情实时大数据报告(利用nodejs)
    Package.json 属性说明
    11 个Chrome骚技巧让你为所欲为
    vue刷新页面空白分两种情况
    修改i输入框中placeholder的样式
    input输入框显示不全是用省略号...代替
    PC端适应屏幕分辨率
    CSS设置滚动条样式
  • 原文地址:https://www.cnblogs.com/s844876674/p/4684470.html
Copyright © 2011-2022 走看看