繁体   English   中英

我将如何实现接口?

[英]How would I implement the interfaces?

在此处输入图像描述

鉴于UML,我被困在如何使用“comparable”关键字正确实现接口上。 下面是我的代码的粗略实现。 (抽象 class 应该是正确的,但接口不是)

interface Bank{
    
    public void institution();

}

abstract Account implements Bank {

    public static int account;

    public void deposit(double amount) {

    }
}

鉴于您的Account是一个抽象的 class,您实际上并不需要实现接口中的方法,它们只能由任何具体的 class 实现。

不过,如果您想为institution()compareTo(Bank o)方法提供默认实现,您可以执行以下操作:

abstract class Account implements Bank {

    public static int account;

    public void deposit(double amount) {

    }

    @Override
    public void institution() {
        // Your logic here
    }

    @Override
    public int compareTo(Bank o) {
        // Your comparison logic here
    }
}

从Bank(三个部分,一个类)和Comparable(两个部分,一个接口)都可以清楚地看到以下内容。 箭头不符合完整的 UML。

public class Bank implements Comparable<Bank>

银行必须实现compareTo所以 class 是合乎逻辑的。

一个账户在任何方面都是一个银行似乎不合逻辑(两个账户就是两个银行)。

public abstract class Account {

    public static int globalAccount; // 'account' in diagram.

    public final Bank bank;

    public final int account;

    protected Account(Bank bank) {
        this.bank = bank;
        ++globalAccount; // New account number.
        account = globalAccount;
    }

    public abstract void deposit(double amount);
}

应该只有一个全局account值,我在这里将其解释为globalAccount ,用于为每个帐户提供一个新编号。

我将银行箭头解释为字段。 不是真正的UML。


Bank islandBank = new Bank();
Account maryAccount = new IslandAccount();
Account joeAccount = new IslandAccount();
assert(maryAccount.bank == islandBank);
assert(maryAccount.account != joeAccount.account);
maryAccount.deposit(-100);
joeAccount.deposit(100);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM