2012-12-01 71 views
0
public class B extends A{ 

    // code goes here 
} 

public class C extends B{ 
    public void method1(){ 
     C c = new C(); 
    } 
} 

由于C扩展B,扩展B继而扩展A,当我创建C的对象时,将在JVM中创建多少个对象。在JVM中创建对象

+6

您是否对此主题做过任何研究? –

+2

扩展另一个类的类中的对象不需要来自父类的对象工作。它只是将这些类用作模板,然后从它自己的类中创建一个对象。 –

+0

如果它想访问父类中的某些变量,该怎么办 – bhalkian

回答

1

将直接创建一个对象。我说“直接”,因为初始化表达式或构造函数代码可以使用“new”创建其他对象。

创建一个C对象将导致4所构造函数调用。在C构造函数的主体之前,有一个对B构造函数的显式或隐式调用。同样,B的构造函数调用A构造函数,该构造函数调用Object构造函数。

该对象是一个C,并且是一个B,并且是一个A,并且是一个对象,并且在该过程结束时将被初始化为它们中的每一个。

欲了解此流程的完整细节,请参阅the JLS

2

一,C类型。要在这里补充一下,使答案在长的30个符号......

1

答案是1 呼叫new C()创建确实延伸B扩展A本身一个对象,所以你可以使用从B和A继承功能