我们假设我有两节课;抽象课"人类"和一个具体的课程"学生"它扩展了人类"。
实施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);
}
有了这个,现在新手知道要实施和写作的内容。但他/她需要编写更多代码并实现其他等变量。
哪种方式更好?
答案 0 :(得分:0)
如果要定义一个或多个派生类(或者甚至可能是所有派生类)使用的默认方法,最好在抽象类中实现该方法。你肯定想要实现getter和setter。这样可以防止大量的代码妄想!
如果你想为每个子类使用不同的实现,你应该使用抽象方法来确保每个类都有自己的实现!