如何按类名调用方法

时间:2013-11-04 16:40:21

标签: java

我的作业中有一句话,我很难过。

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

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

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);
}

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

5 个答案:

答案 0 :(得分:1)

In the doc

  

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

然后你的要求是属于不是实例的类的方法。

可以通过名称访问静态方法,因此请将CbtBank#transfer设为静态方法。

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

答案 1 :(得分:0)

可以使用classname调用

static个方法。您可能需要将transfer方法转为静态理解其含义。完成后,您可以调用此处提到的transfer方法:

CbtBank.transfer(person1, person2, 50.0);

答案 2 :(得分:0)

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

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

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

}

感谢您的回答。

答案 3 :(得分:0)

只需制作方法static即可。这样,您可以在没有实际对象的情况下调用它,但可以使用类本身。

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

答案 4 :(得分:0)

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

在这里,转移不是帐户特有的东西,加上它的逻辑,你的CbtBank对象就是所谓的 Plain Old Java Object 。逻辑应该在其他地方,但是,在这种情况下,它位于类中。

将其视为:帐户本身不应该负责交易。帐户A不应该篡改帐户B的余额,因为该帐户B的私人信息。

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

Account.transfer(CbtBank from, CbtBank to, double amount)