子类的对象创建是否创建了超类的对象,如果是,是否可以在子类中访问它?

我的问题是,当我们实例化一个子类时,我们是否可以访问和使用间接/隐式创建的超类对象。

让我们说ClassASubClassofA超类,我们使用SubClassofA object = new SubClassofA();在客户端类ClientClass实例化SubClassofA SubClassofA object = new SubClassofA();

由于整个inheritance层次结构在我们创建子类对象时被实例化,我想知道,是否可以在客户端类中访问类ClassA对象?

如果不可能,可能是什么原因? 如果我们可以访问超类对象而不重新创建它们,它会不会节省大量的堆内存?

我可能误解了构造函数链接和inheritance层次结构的整个概念,但请让我知道你对此的看法。

 public class ClassA {} public class SubClassofA extends ClassA {} public class ClientClass { public static void main(String[] args) { // TODO Auto-generated method stub SubClassofA object = new SubClassofA(); //Above construct means that an instance of super class ClassA exists too // If we can use those super class instances directly, will it result in memeory saving? //is it even possible to access implicitly created super class objects tied to subclass? } } 

由于整个inheritance层次结构在我们创建子类对象时被实例化,我想知道,是否可以在客户端类中访问类ClassA的对象?

这是很多人感到困惑的事情。 如果创建子类的对象,那并不意味着它创建了超类的对象。

它只是调用超类的构造函数,只是为了确保所有必需的字段都在超类中初始化, 但这不会创建超类的对象

这个问题将帮助您理解这个概念。

检查凯文的答案:

它不会创建两个对象,只有一个: B

从其他类inheritance时, 必须在构造函数中调用super()。 如果不这样,编译器将为您插入该调用,您可以清楚地看到。

调用超类构造函数,因为否则对象将保持未初始化状态,可能是子类开发人员不知道的。