java - 扩展内部类和扩展嵌套类之间的区别?

标签 java inheritance nested inner-classes extends

class OuterClass
{
    static class InnerClassOne
    {
        //Class as a static member
    }

    class InnerClassTwo
    {
        //Class as a non-static member
    }
}


class AnotherClassOne extends OuterClass.InnerClassOne
{

}


class AnotherClassTwo extends OuterClass.InnerClassTwo
{
    public AnotherClassTwo()
    {
        new OuterClass().super();  //accessing super class constructor through OuterClass instance
    }
}

我有这些类,为什么当从嵌套类扩展时我们不调用外部类构造函数,但是当从内部类扩展时应该通过外部对象调用外部构造函数,那么有什么区别以及为什么?

最佳答案

原因很简单。要访问静态属性,您不需要创建对象,即不需要实例化该类。

但是,如果您想访问非静态属性,您首先需要创建该类的对象,然后使用它。

因此,在您的情况下,当您想要扩展 InnerClassTwo(这是一个内部类且非静态)时,您必须将其与外部类的构造函数关联起来 AnotherClassTwo code>,因为它可以被视为该外部类的属性。

关于java - 扩展内部类和扩展嵌套类之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40112412/

相关文章:

java + 我应该使实例变量类不可变吗

c++ - 如何在不向下转型的情况下调用派生类的成员函数

python - 如何在Python中生成嵌套循环

javascript - 使用 jquery 读取嵌套 json 返回未定义

java - 如何使用多个行键从 cassandra 中的计数器列获取值?

java - java 中的自动装箱与 th++,-- 运算符

使用构造函数的 Javascript 继承

nested - 从 Modelica 中的嵌套可替换类扩展类

java - 重置 : Use converter service in filter

c++ - 调用虚函数时的静态成员函数语义