返回null
一个活着的动物的死亡日期是完全合理的,但在这种情况下,我发现最好提供一个布尔死亡检查:
public boolean isDead() {
return deathDate != null;
}
这提供了一种合理的方法来检查实例的死亡情况,而无需对属性进行笨拙的 null 检查:
// this is ugly and exposes the choice of the value of the field when alive
if (animal.getDeathDate() != null) {
// the animal is dead
}
使用该isDead()
方法,您将有权执行此操作:
public Date getDeathDate() {
if (deathDate == null)
throw new IllegalStateException("Death has not occurred");
return deathDate;
}
关于乌龟的飞行速度,您可以应用相同的方法,尽管我认为您的类设计存在问题 - 并非所有动物都会飞行,因此Animal
该类不应该有getFlyingSpeed()
方法。
相反,使用这样的东西:
interface Flyer {
Integer getFlightSpeed();
}
class Animal {}
class Turtle extends Animal {}
class Eagle extends Animal implements Flyer {
public Integer getFlightSpeed() {
//
}
}