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/