我有一个继承自其父类的子类,并且在理解如何访问子类的对象属性时遇到了麻烦。
在我的示例中,我将调用类Friend
,该类继承自name
的{{1}}和phone
,但具有自己的变量Acquaintance
和{{ 1}}。创建完成后,我要打印birthdate
对象的内容,其中包括address
,Friend
,name
,phone
。
因为我希望所有变量都是私有的,所以我以为我会使用getter,但是我不确定在这种情况下如何调用父类。
birthdate
子类:
address
答案 0 :(得分:1)
父类Acquaintance
中的字母,例如getName
是公开的,因此在这种情况下,它们对于子类Friend
是可见的。因此,仅使用getName
之类的吸气剂就可以从子类内部访问超类中定义的字段。
在您的情况下,只需删除getName
修饰符,即可将static
方法设为实例方法。然后像这样更改代码,
public void printContact() {
/*
* This is where I'm having trouble. I don't know how to access the name, and
* phone which are contained in the superclass.
*/
getName();
}
答案 1 :(得分:0)
基本上,我将把类称为
Friend
,它从熟人那里继承了name
和phone
由于name
和phone
被声明为private
,因此不被继承。子类仅从其父类继承protected
和public
字段和方法。这意味着您必须调用getName()
才能访问此字段。您可以不使用限定符来调用它,也可以使用this.getName()
来调用它。在类getName()
和this.getName()
中是同一件事。
答案 2 :(得分:0)
子类继承其父类的所有 public 和 protected 成员。对于您的情况,由于getName()
是公共的,因此通常可以在Acquaintance
的子类中调用它,如下所示:
public void printContact() {
System.out.println("Name: " + this.getName() + "Phone: " + this.getPhone() + "Birthdate: " + this.birthdate + "Address: " + this.address);
}
请注意,关键字this
的使用是可选的。它只是“强调”正在调用该方法的是当前对象。
此外,当您希望超类的子类继承其成员(变量,方法等),同时又使它们对其他类不可见时,可以执行以下操作:
int phone
); protected
访问修饰符( eg: protected int phone
)声明它们。 / li>