java - 这是关于子类和父类(super class)的

标签 java inheritance

我想问一些概念:
子类的对象属于父类的父类(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/

相关文章:

java - 如何让我的程序每五秒重复一次声音?

Java -> Mysql : get INT doesnt work?

python - 强制子类编写文档字符串

symfony - 如何从父包扩展 Twig 模板?

java - 两个 Kafka 消费者互相造成奇怪的行为

java - 为什么 JPA 实体类及其方法不能声明为 final?

java - 注释参数的继承

c++ - C++设计:基类构造函数和自定义字符串类的is-a或has-a关系

java - 访问封闭类或父类的方法的一般方法

java - 发生 JNI 代码错误时如何正确停止线程?