java - 在继承和利用不同类中的属性方面遇到麻烦

标签 java class inheritance subclass superclass

我是 Stack Overflow 和 Java 的新手,我很难找到一种方法来创建一个利用其他两个类的属性的类。它不需要所有属性,只需选择一个。

我有一个房子、一个城镇和一个 person 类。其中 house 需要来自 town 的城镇名称和来自 person 的 name & phNumber

到目前为止,这是我的代码:

public class Town {
    protected String name;
    private int postCode;

    public Town (String tName , int tCode){
        name = tName;
        postCode = tCode;

    }

    public String getName(String name){
        return name;
    }

    public int getCode(int postCode){
        return postCode;
    }

人类:

public class Person {
    protected String pName;
    private long pNumber;

    public Person (String name,long number){
        pName = name;
        pNumber = number;
    }

    public String getPersonName(String name){
        return pName;
    }

    public long getNumber(long number){
        return pNumber;
    }

    public void setNumber(long newNumber){  
        pNumber = newNumber;
    }

还有我的家庭类:

public class House extends Person, Town {

    public House(String address , String name, int code , String pName,     Long pNumber) {
        this.name = Person.pName;

    }
}

但是正如您所看到的,我似乎无法让 house class 做我想做的事,并且在搜索在线资源后找不到太多关于此事的帮助。任何指向正确方向的指示都将不胜感激。

最佳答案

House 不能同时扩展 Person 和 Town。 Java 不允许多重继承。

而且它无论如何都没有意义。房子不是人,房子不是城镇。

组合会更有意义 - 房子包含一个人(或可能是多个人)并且位于城镇中。

例如:

public class House {

    private Person person;
    private Town town;

    public House(String address , String name, int code , String pName, Long pNumber) 
    {
        this.Town = new Town (name, code);
        this.person = new Person (pName, pNumber);
    }
}

但是,将 PersonTown 实例传递给 House 构造函数可能更有意义,因为可以有多个 Houses在同一个 Town,因此它们共享同一个 Town 实例是有意义的。

关于java - 在继承和利用不同类中的属性方面遇到麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29667662/

相关文章:

c++ - 类 Square 应该从类 Rectangle 公开继承吗?

c# - 从基类的构造函数访问子类的属性

java - 将jar库添加到jar文件中

java从/到asn1日期时间的转换

java - 如何在接口(interface)中获取非抽象方法?

c++ - 如何使用另一个变量访问对象的变量/方法

java - 具有类 Java API 的 C++ 库

java - 将触摸事件从重叠 Activity 传递到 Android 中的底层 Activity

html - DIV 内的边距

inheritance - 如何在 TypeScript 中扩展宿主对象(例如错误)