Java学习之继承的奇思妙想

刚刚想到如果静态内部类继承了父类,那岂不是可以无限套娃了,然后就动手试了一下

复制代码
public class InsideClass {

    class $InsideClass extends InsideClass {

    }

    public static void main(String[] args) {
        $InsideClass c = new InsideClass().new $InsideClass();
        $InsideClass s = c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c;
    }
}
复制代码

 

然后发现行不通,这说明单单在类中定义一个内部类,它并不输入父类的成员。在类中定义一个内部类类型的成员变量时,就可以无限套娃了。然而没有实例化里面还是空哒!什么都没有哇!

复制代码
 1 package study;
 2 
 3 public class InsideClass {
 4     $InsideClass c;
 5 
 6     class $InsideClass extends InsideClass {
 7 
 8     }
 9 
10     public static void main(String[] args) {
11         $InsideClass c = new InsideClass().new $InsideClass();
12         $InsideClass s = c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c;
13         System.out.println(s);// java.lang.NullPointerException at study.InsideClass.main(InsideClass.java:12)
14     }
15 }
复制代码

 

对于静态内部类来说,它是输入类的,而不是实例的,所以更加无法被继承啦,但是也可以在类中定义一个内部类类型的成员变量实现套娃~

 

posted @   康舒服冰红茶  阅读(120)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示