如何反映子类的两个对象永不过期?

时间:2013-06-21 00:34:50

标签: java inheritance polymorphism subclass superclass

超类:

public class Card 

{


 ...

       public boolean isExpired() //Card never expires.

       { 

             return false; 

       }

}

子类:

public class IDCard extends Card {}

public class PhoneCard extends Card {}

问题: 身份证和电话卡不会过期。您应该怎么做才能在实施中反映这一事实?

2 个答案:

答案 0 :(得分:1)

仅提示!我不是为你编码,因为它看起来像是一个“学习练习”。

您可以实现超类的行为,以便Card 的实例可以过期。并在必要时覆盖相关子类中的行为。然后,您需要确定“不可触及”的子类是否将使用或忽略超类中的变量,该变量表示该卡是否已过期...并相应地实施。

或者,您可以将超类实现为abstract类,并使isExpired成为abstract方法。

我不会说这是“正确的方法”。我希望自己想一想。

答案 1 :(得分:0)

DON' T覆盖您的子类IDCard和PhoneCard中的isExpired方法,因为您的父类卡已经让您不会过期'行为。确保父类中有一个名为isExpired的字段,那么它应该是私有的,并且不应该有它的setter。