【发布时间】:2017-11-09 09:00:10
【问题描述】:
上完课我在练习继承和组合,决定写一个小程序来尝试一些东西,偶然发现一个问题,我会展示我的代码,它有4个类,包括Main.java:
public class Main {
public static void main(String[] args) {
Person person1 = new Person("Person1", 170); //"Name", height
Person person2 = new Person("Person2", 200); //"Name", height
Bed bed1 = new Bed(160);
Bedroom bedroom1 = new Bedroom(bed1, person1);
bedroom1.sleep();
public class Bedroom {
private Bed theBed;
private Person thePerson;
//Constructors
public void sleep() {
if(thePerson.getHeight() > 180) {
System.out.println("You are too tall to sleep on this bed.");
} else {
theBed.sleepOnBed();
}
}
//Getters
public class Bed {
private Person thePerson;
private int height;
//Constructor
public void sleepOnBed() {
System.out.println("You sleep on the bed.");
}
//Getters
public class Person {
private String name;
private int height;
//Constructor
//Getters
我想要做的是在 Main.java 的 bedroom1 对象中同时使用 person1 和 person2,然后在它们上测试 sleep() 方法,但我就是想不通使用方法。
我尝试过这样的事情:
public class Bedroom {
private Bed theBed;
private Person thePerson1;
private Person thePerson2;
public Bedroom(Bed theBed, Person thePerson1, Person thePerson2) {
this.theBed = theBed;
this.thePerson1 = thePerson1;
this.thePerson2 = thePerson2;
}
public class Main {
public static void main(String[] args) {
Person person1 = new Person("Person1", 170);
Person person2 = new Person("Person2", 200);
Bed bed1 = new Bed(160);
Bedroom bedroom1 = new Bedroom(bed1, person1, person2);
bedroom1.sleep();
但正如您可能理解的那样,这将一事无成。我太累了,在网上找不到任何线索,可能是因为我使用了错误的关键字 idk。
我希望我的程序获取数据类型为 Person 的多个对象,并查看它们的高度是否符合睡在床上的条件,差不多就是这样。
【问题讨论】:
-
您可以定义一个
array of Person,并将其传递给Bedroom构造函数。然后你可以遍历数组并检查你想要的条件。当你这样做时,你需要在Bed对象中设置验证条件的人。
标签: java class object inheritance composition