【发布时间】:2015-10-28 14:54:38
【问题描述】:
在Java继承中,我们可以通过子类对象访问父类属性,因为有一个关键字extends可以实现继承。但我的问题是我们只能通过该类对象引用访问任何类非静态数据成员或方法,因此在继承的情况下,我们创建子类对象并访问父属性,以便按照 java 规则我们可以访问任何 DM(数据成员) 仅通过该类对象,因此在这种情况下,根据我的说法有两种可能性:
当继承发生时,所有数据成员或成员函数首先被复制到子作用域,然后我们使用它们,因为现在它们是 Child 的属性,很容易访问,但在这种情况下,相同的 DM 和方法在两者中,子记忆以及父母记忆。这不是一个好方法,因为如果我在父级中有 100 个属性,那么首先将所有 100 个属性复制到子内存中然后再使用。
当我们隐式创建子对象时,父类对象由编译器创建,所有父类方法都通过该父类对象隐式调用,但据我说这还没有完成。在 Java 中继承的情况下没有父对象的创建。您还可以通过在子类和父类中打印 ref 来检查这一点,它们都具有相同的引用,因此不会创建父对象。
所以我的问题是,如何通过子对象访问父对象的属性在内部意味着它们是如何实现的,或者是否有任何第三种方法可以实现在 java 中使用的相同功能。
【问题讨论】:
-
extends 是关键字
-
这听起来就像你在寻找
super,你可以使用它访问父方法以及构造函数(否则默认),但只能作为第一个语句。 -
@maraca:感谢您的回复,但我想知道他们在没有父对象的情况下如何在内部访问。
标签: java inheritance