扩展内部 class 和扩展嵌套 class 之间的区别?
difference between extends inner class and extends nested class?
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
}
}
我有论文 classes,为什么当从嵌套 class 扩展时我们不调用外部 class 构造函数,但是当从内部 class 扩展时应该调用外部通过外部对象构造函数,那么有什么区别,为什么??
原因很简单。要访问 static
属性 您不需要创建对象,即您不需要实例化 class.
但是如果你想访问一个非静态 属性你首先需要创建一个对象class然后使用它。
所以在你的情况下,当你想扩展 InnerClassTwo
(这是一个内部 class 和非静态)时,你必须将它与外部 [=21= 的构造函数相关联] AnotherClassTwo
,因为它可以被认为是那个外部 class.
的 属性
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
}
}
我有论文 classes,为什么当从嵌套 class 扩展时我们不调用外部 class 构造函数,但是当从内部 class 扩展时应该调用外部通过外部对象构造函数,那么有什么区别,为什么??
原因很简单。要访问 static
属性 您不需要创建对象,即您不需要实例化 class.
但是如果你想访问一个非静态 属性你首先需要创建一个对象class然后使用它。
所以在你的情况下,当你想扩展 InnerClassTwo
(这是一个内部 class 和非静态)时,你必须将它与外部 [=21= 的构造函数相关联] AnotherClassTwo
,因为它可以被认为是那个外部 class.