超类:
public class Card
{
...
public boolean isExpired() //Card never expires.
{
return false;
}
}
子类:
public class IDCard extends Card {}
public class PhoneCard extends Card {}
问题: 身份证和电话卡不会过期。您应该怎么做才能在实施中反映这一事实?
答案 0 :(得分:1)
仅提示!我不是为你编码,因为它看起来像是一个“学习练习”。
您可以实现超类的行为,以便Card
的实例可以过期。并在必要时覆盖相关子类中的行为。然后,您需要确定“不可触及”的子类是否将使用或忽略超类中的变量,该变量表示该卡是否已过期...并相应地实施。
或者,您可以将超类实现为abstract
类,并使isExpired
成为abstract
方法。
我不会说这是“正确的方法”。我希望你自己想一想。
答案 1 :(得分:0)
DON' T覆盖您的子类IDCard和PhoneCard中的isExpired方法,因为您的父类卡已经让您不会过期'行为。确保父类中有一个名为isExpired的字段,那么它应该是私有的,并且不应该有它的setter。