假设使用以下代码,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是否会创建两个对象实例?
答案 0 :(得分:2)
没有。只创建了一个对象,并且所有内存都以Child的名称分配,即使对于从Parent继承的字段也是如此。
JVM总是创建Object类的实例,因为Object是Java中所有类的父级。
没有。但是,JVM会调用父构造函数,直到它到达调用为constructor chaining的最顶层的Object构造函数。
答案 1 :(得分:2)
嗯......这取决于你是什么意思,询问是否创建了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
。
答案 2 :(得分:1)
无论继承层次结构是什么,都只创建一个对象。父项的要素是继承的,并在与new运算符一起使用的类对象中提供。
MyTestclass obj = new MyTestclass();
在MyTestclass
个实例中具有Object
和obj
类所有功能的一个对象。