3

假设我有 3 个不同的课程:

班人班室班房

它们是这样链接的:

在教室我做:Room room = new Room(); 在教室里做:Person person = new Person();

亲自我有这个方法:

public String getName(){
 return name;
}

如何从类House访问此方法?

我现在这样做的方法是在Room类中重复该方法,例如:

public String getName(){
 return person.getName();
}

所以在HousegetName()Room调用方法,在RoomgetName()Person调用方法。所以名称变量然后从Person通过Room传递到House

但是这样我就复制了我需要在 House 中访问的 Person 的所有方法。这不可能是对的....我想过“扩展”,但这没有意义。有人可以向我解释一下(我现在在我的代码中复制了很多方法)。它可能是基本的 OOP 东西,但我似乎无法弄清楚。

提前致谢!

4

2 回答 2

2

但是这样我就复制了我需要在 House 中访问的 Person 的所有方法。这不可能……

你是对的。你不需要这样做。那不是正确的方法。

由于您在课堂上有Person参考Room,因此您只需要为以下内容定义一个“getter” person:-

public Person getPerson() {
    return person;
}

然后组成您的House班级,您可以获得person姓名和其他详细信息,如下所示:-

room.getPerson().getName();
room.getPerson().getAge();

因此,基本上,您将在您的班级中person获得您的实例的参考副本(而不是个人实例本身的副本) 。然后使用该引用,就好像它仅在类中定义一样。roomHouseHouse

还有一点,我看到你的吸气剂是私人的。你不应该那样做。将它们公开,否则它们将无法在外部访问。getters并且setters应该几乎总是公开的。

于 2013-01-25T20:59:19.887 回答
1

将人暴露为房间的财产。

你所拥有的有点奇怪,因为人们会期望 room.getName() 返回房间的名称。

相反 Room 应该有一个 getPerson() 方法,所以当需要一个人名时, room.getPerson().getName()

于 2013-01-25T21:00:53.687 回答