我想问一些概念:
子类的对象属于父类的父类(super class)。
父类的方法是否存在于子类的内存中?即复制父类的属性和方法到子类?或者
子类对象如何操作父类的属性和方法?
谢谢。
最佳答案
The object of the subclass belongs to the parent superclass.
“属于”是一个糟糕的术语。更好的说法是,作为类 C
的实例的对象也是C
实例 code> 的直接父类(super class)。 (事实上,它是所有 C
父类(super class)的实例。)
Does the method of the parent class exist in the memory of the subclass?
你在这里有一个根本性的误解。类的内存中不存在方法。或者实例的内存。
它们实际上保存在与类和实例分开的内存中。
最接近您所说的是类描述符将包含对方法的内部引用。但这一切都是隐藏的,您不应该关心细节。
相比之下,对象的(非静态
)属性(由类定义)实际上是对象的一部分。事实上,子类和所有父类(super class)定义的属性都是同一个对象的一部分。
这样想:
- 动物有腿。
- 猫是一种动物。
- 狗是一种动物。
- 猫有 mustache 。
- 狗的腿是狗的一部分。
- 毛茸茸的猫的腿是毛茸茸的一部分。
- 蓬松猫的 mustache 是蓬松的一部分。
How do subclass objects manipulate the attributes and methods of the parent class?
对象不会“操纵”方法。他们调用他们。他们如何调用它们取决于实现,但概念上他们在类描述符中找到它们。
方法通过引用查看对象来访问属性。由于子类和父类(super class)属性都属于同一个对象(见上文!!),因此它们的访问方式相同。
关于java - 这是关于子类和父类(super class)的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57036261/