哪个实现更好?

时间:2015-01-23 11:55:24

标签: java inheritance polymorphism abstract-class

我们假设我有两节课;抽象课"人类"和一个具体的课程"学生"它扩展了人类"。

实施1;

public abstract class Human {

private String firstName;
private String lastName;
private String location;

public Human()
{
    super("Human");
}
public Human(String firstName,String lastName) {
    super("Human");
    this.firstName = firstName;
    this.lastName = lastName;
}
public Human(String firstName,String lastName,String loc) {
    super("Human");
    this.firstName = firstName;
    this.lastName = lastName;
    this.location = loc;
}
public String getLocation()
{
    return location;
}
public void setLocation(String loc)
{
    this.location = loc;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

}

所以"学生" class可以调用相互方法作为返回super.FirstName或set.SetFirstName(String f)等...但它不会强迫某人实现方法,所以新手不知道如何添加新类。但是,他们也不需要在这些方法中的每个子类中实现诸如firstname等的互变量。他们只是打电话给超级。

实施2;

public abstract class Human{

public abstract String getLocation();

public abstract void setLocation(String loc);

public abstract String getFirstName();

public abstract void setFirstName(String firstName);

public abstract String getLastName()

public abstract void setLastName(String lastName);


}

有了这个,现在新手知道要实施和写作的内容。但他/她需要编写更多代码并实现其他等变量。

哪种方式更好?

1 个答案:

答案 0 :(得分:0)

如果要定义一个或多个派生类(或者甚至可能是所有派生类)使用的默认方法,最好在抽象类中实现该方法。你肯定想要实现getter和setter。这样可以防止大量的代码妄想!

如果你想为每个子类使用不同的实现,你应该使用抽象方法来确保每个类都有自己的实现!