如何使用另一个类的属性创建(获取)方法

时间:2018-11-27 13:37:04

标签: java

我有两个类,一个是House,它肯定具有其他属性,但是我只包括了遇到问题的一个类:

public class House {

private Address addressOfHouse;

public House (Address addressOfHouse){
    this.setAddressOfHouse(addressOfHouse);

public Address getAddressOfHouse() {
    return addressOfHouse;
}

public void setAddressOfHouse(Address addressOfHouse) {
    this.addressOfHouse = addressOfHouse;
}
}

另一个是地址:

public class Address {

public String streetName;
public String city;
public int postalCode;

public Address (String streetName, String city, int postalCode){
    this.streetName=streetName;
    this.city=city;
    this.postalCode=postalCode;
}

public String getStreetName() {
    return streetName;
}

public String getCity() {
    return city;
}

public int getPostalCode() {
    return postalCode;
}
}

当我创建一个对象“ house”时,为其设置一个地址,然后尝试调用方法“ getAddressofHouse”:

public class Main {

public static void main(String[] args) {
    Address address2 = new Address("Y", "Praha", 11000);

    House house2 = new House (address2);

    System.out.println(house2.getAddressOfHouse());

它没有给我房子的地址。它给了我这个:

com.company.Address@7f63425a

我的问题是知道我对“房屋”类中的地址的设定者和执行者的处理不正确。这是我一直在做的一个练习,它要求我有一个名为“ addressOfHouse”的属性,其数据类型为“ Address”(类为“ Address”)。因此,我想我必须通过“ getAddressOfHouse”方法来调用房屋的地址,但是我一直在尝试,但根本没有用。你能帮我吗?如果您认为我应该将整个代码放在这里,我会做的。我先谢谢大家。

2 个答案:

答案 0 :(得分:4)

System.out.println(house2.getAddressOfHouse());

输出

  

com.company.Address@7f63425a

这是Object.toString()的默认实现。

如果要查看更多织法,则必须在public String toString() { }类中重写Adress方法。例如:

public String toString() {
    return "Address{" +
            "streetName='" + streetName + '\'' +
            ", city='" + city + '\'' +
            ", postalCode=" + postalCode +
            '}';
}

答案 1 :(得分:1)

您需要向该地址添加toString()方法。如果没有,它将在尝试打印时将对象的参考作为默认值打印。

请参阅:toString() doc. 我在这里重复:

  

公共字符串toString()返回字符串的字符串表示形式   宾语。通常,toString方法返回一个字符串,该字符串   “用文字表示”此对象。结果应该简洁明了   易于阅读的信息丰富的表示形式。它是   建议所有子类都重写此方法。 toString   类Object的方法返回一个字符串,其中包含   对象是实例的类,符号字符“ @”,   以及哈希码的无符号十六进制表示形式   宾语。换句话说,此方法返回的字符串等于   值:

     

getClass()。getName()+'@'+ Integer.toHexString(hashCode())
  返回:对象的字符串表示形式。