JVM将始终创建Object类的实例



假设使用以下代码,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的实例是什么意思。。。

记住继承是如何工作的。假设您有四个类:ObjectAnimalDogTerrier。创建Terrier 实例时

Terrier t = new Terrier();

只创建一个实例。您不会创建单独的Object实例。但另一方面,继承的要点是TerrierDog,它也是一个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_。

相关内容

最新更新