我确信我记得有一种方法可以使超类的任何子类定义某些方法。我该怎么做?
在我的示例中,超类是Account(并且是抽象的),子类是SavingsAccount和CurrentAccount。所有子类都必须实现自己的withdraw()方法。
答案 0 :(得分:7)
在抽象类中定义此方法。
public abstract <returnType> withdraw();
然后,任何扩展抽象类的类都将被强制实现withdraw
方法。
答案 1 :(得分:3)
将public abstract void withdraw();
放入帐户。
答案 2 :(得分:1)
如果SavingAccount和CurrentAccount彼此不了解并且每个都扩展了帐户,那么您只需在帐户类中提及:
public abstract <return type> withdraw();
因此派生类(如果它们不是抽象的)应该实现此方法。
答案 3 :(得分:1)
如果Account class
已经abstract
。您可以添加名为abstract
的{{1}}方法,例如:
withdraw()
这将强制CurrentAccount和SavingsAccount覆盖withdraw()。
您对抽象类的好处是允许您添加子类(CurrentAccount,SavingsAccount)可以调用的方法(到Account)。
这对于避免两次编写相同的代码非常有帮助。
此方案适用于您的工厂模式。
答案 4 :(得分:0)
如果您将Account类和方法声明为abstract,那么如果您没有在扩展Account类的子类中实现抽象方法,则编译器会给您一个错误。