Java OOP 前置条件问题

问题描述 投票:0回答:1

在现有的银行系统中,我们有一个类

Account
定义如下:

public class Account {
    // Private part of the class
    public Account(Customer accountHolder) { ... }
    public Customer getAccountHolder() { ... } // Customer has a method getAge

    public float getBalance() { ... }
    // Other methods
    /**
     * @assertion.pre (amount >=0 && getBalance()-amount>=0)
     **/
    public void withdrawal(float amount) { ... }

    /**
     * @assertion.pre (amount >=0)
     **/
    public void deposit(float amount) { ... }
}

现在,我想实现另一种类型的帐户

SpecialAccount
,允许每个帐户提款最多达到固定的负余额。问题是
Account
类无法修改,新实现的特殊账户需要使用原来
Account
的服务。

如您所见,在原始版本中提款有避免负数作为余额的前提条件,但由于它需要在特定类中实现,覆盖该方法将意味着它需要使用超级版本。

如何正确实现

SpecialAccount
功能?

java class oop inheritance
1个回答
0
投票
  1. 一种方法是您可以将 Account 作为 SpecialAccount 的父类并重写具有不同功能的方法。
  2. 您可以为帐户和特殊帐户创建接口。并定义必须在两种类型的帐户中实施的方法。这样,在创建对象时,您可以将类型转换为接口。

您可以选择其中任何一种方法来实施任何帐户类型。

© www.soinside.com 2019 - 2024. All rights reserved.