MrK*_*ard 3 java inheritance class subclass superclass
我是Stack Overflow和Java的新手,我很难找到一种方法来创建一个利用来自其他两个类的属性的类.它不需要所有属性只选择一个.
我有一个房子,城镇和一个人的班级.房子需要镇上的城镇名称和姓名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;
}
Run Code Online (Sandbox Code Playgroud)
和班级:
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;
}
Run Code Online (Sandbox Code Playgroud)
而我的家庭班:
public class House extends Person, Town {
public House(String address , String name, int code , String pName, Long pNumber) {
this.name = Person.pName;
}
}
Run Code Online (Sandbox Code Playgroud)
但正如你所看到的,我似乎无法让家庭班级做我想做的事情,在搜索完在线资源后,无法找到很多帮助.任何指向正确方向的人都会非常感激.
众议院不能延伸人和镇.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);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它可能会更有意义,传递Person和Town实例的House构造函数,因为可以有多个房屋都在同一个城市,所以它是有道理的,他们共享同一个镇的实例.