繁体   English   中英

如何通过类名调用方法

[英]How to call a method by class name

我在作业中遇到了困难。

您应该提供从帐户中提取和存入给定数量的钱的方法,以及提供一个帐户中给定数量的钱转移到另一个帐户的转账方法。 可以通过使用类名来调用传输方法。

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

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

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

在文档中

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

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

静态方法可以通过其名称访问,因此使CbtBank#transfer成为静态方法。

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

static方法可以通过使用类名来调用。 您可能必须将transfer方法变为静态方法,以了解其含义。 完成此操作后,您将按以下说明调用transfer方法:

CbtBank.transfer(person1, person2, 50.0);

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

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

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

}

感谢您的回答。

只需将方法static 这样,您可以不使用实际对象而是通过使用类本身来调用它。

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

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

在这里,转帐不是帐户的特殊事项,而是逻辑,您的CbtBank对象就是所谓的Plain Old Java Object 逻辑应该在其他地方,但是在这种情况下,它位于类中。

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

如果是我,我会要求该方法在另一个类中,但请坚持您的作业。 将该方法声明为static方法并进行静态调用:

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

暂无
暂无

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

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