假设使用以下代码,JVM是否总是创建Object类的实例,因为Object是Java中所有类的父类。
class MyTestclass{
void printMe(String name){
System.out.println('I am '+name);
}
public static void main(String args[]){
MyTestclass obj = new MyTestclass();
obj.printMe("stackOverFlow.com");
}
}
另一类称为TestClass2
class TestClass2{
void printMe(String name){
System.out.println('I am '+name);
}
public static void main(String args[]){
MyTestclass obj = new MyTestclass();
TestClass2 obj2 = new TestClass2();
obj.printMe("stackOverFlow.com");
obj2.printMe("stackOverFlow.com");
}
}
如果我运行这两个类,JVM会创建两个对象实例吗?
否。只有一个对象创建,所有内存都以Child的名义分配,即使是从Parent继承的字段也是如此。
JVM总是创建Object类的实例,因为Object是Java中所有类的父类。
没有。但是JVM调用父构造函数,直到它到达调用为构造函数链接的最顶端的Object构造函数。
嗯。。。这取决于您询问是否创建了Object
的实例是什么意思。。。
记住继承是如何工作的。假设您有四个类:Object
、Animal
、Dog
和Terrier
。创建Terrier
实例时
Terrier t = new Terrier();
只创建一个实例。您不会创建单独的Object
实例。但另一方面,继承的要点是Terrier
是Dog
,它也是一个Animal
,它是一个Object
。因此,创建的这一个实例不仅仅是一个Object
,而且它肯定是Object
,就像其他所有实例一样。
所以你本可以编写
Object t = new Terrier();
或
Animal t = new Terrier();
或
Dog t = new Terrier();
并且它将是完全有效的Java。
因此,答案是:Object
的子类的一个实例被创建,因此它是一个Object
。
无论继承层次结构是什么,都只创建一个对象。来自父级的特性被继承,并在与新运算符一起使用的类的对象中提供。
MyTestclass obj = new MyTestclass();
一个对象具有CCD_ 18实例中CCD_ 16和CCD_。