0

我的作业中有一条线我很难处理。

您应该提供从一个帐户提取和存入给定金额的方法以及将给定金额从一个帐户转移到另一个帐户的转移方法。可以使用类名调用传输方法。

我不太明白最后一句话是什么意思。这就是我所拥有的;

public class CbtBank {
    private double balance;
    private String firstName, lastName;
    private int accountNumber;

    public CbtBank(String firstName, String lastName, int accountNumber, double balance) {
        this.balance = balance;
        this.firstName = firstName;
        this.lastName = lastName;
        this.accountNumber = accountNumber;
    }

    public void transfer(CbtBank from, CbtBank to, double amount){
        to.balance += amount;
        from.balance -= amount;
    }
}

还有我的 main.java;

public static void main(String[] args) {
    CbtBank person1 = new CbtBank("can", "berk", 3123, 100.0);
    CbtBank person2 = new CbtBank("can2", "berk2", 3124, 200.0);
    CbtBank.transfer(person1, person2, 50.0);
}

我无法让它以这种方式工作,但我什至不确定这是否意味着。有任何想法吗?

4

5 回答 5

1

在文档中

在本节中,我们将讨论使用 static 关键字来创建属于类的字段和方法,而不是属于类的实例。

那么你的要求是属于一个类而不是实例的方法。

静态方法可以通过其名称访问,因此请创建CbtBank#transfer一个静态方法。

class CbtBank
{
     public static void transfer(CbtBank to,CbtBank from,double value)
     {
         to.balance += amount;
        from.balance -= amount;
     }
}
于 2013-11-04T16:43:49.730 回答
0

它与 的概念有关static。这定义了与给定类型的具体实例无关但与类本身无关的变量或方法。

在这里,转移并不是一个特定的帐户,加上它的逻辑,你的CbtBank对象就是可以称为普通旧 Java 对象的东西。逻辑应该在别处,但在这种情况下,它位于类中。

可以这样想:账户本身不应该负责交易。账户 A 不应该篡改账户 B 的余额,因为那是账户 B 的私人信息。

如果是我,我会要求该方法在另一个班级,但坚持你的任务。将方法声明为static并进行静态调用:

Account.transfer(CbtBank from, CbtBank to, double amount)
于 2013-11-04T16:50:58.027 回答
0

static可以使用类名调用方法。您可能不得不将您的transfer方法转变为静态的,以了解其含义。一旦你这样做了,你就会调用你的transfer方法,如下所述:

CbtBank.transfer(person1, person2, 50.0);
于 2013-11-04T16:41:09.247 回答
0

我错过了“静态”关键字。所以正确的版本是;

    public static void transfer(CbtBank from, CbtBank to, double amount){

    to.balance += amount;
    from.balance -= amount;

}

感谢您的回答。

于 2013-11-04T16:46:00.197 回答
0

只做方法static。这样,您可以在没有实际对象的情况下调用它,而是使用类本身。

public static void transfer(CbtBank from, CbtBank to, double amount){
    to.balance += amount;
    from.balance -= amount;
}
于 2013-11-04T16:46:17.163 回答