如何从另一个 class java 调用一个参数作为对象的方法?

How to call a method with parameters as objects from another class java?

我试图不只是通过手动输入值来调用方法,而是 运行 来自另一个 class 的另一个 class 的方法。我试图通过查看类似的问题来找出解决方案,但在这种情况下它们对我没有帮助。

我可能说错了请见谅,这个需求是让我调用一个带参数的方法,我不明白该怎么做。

这是要求:

a) Add a method payForHoliday() to the Member class. This method will simply call a method in the Website class to pay for the holiday (i.e. to record the transaction with the website). And here we have a problem because the object from the Member class doesn't keep a record of which website the member is logged into.

Class 网站:

public class Website {
    private String websiteName;
    private double salesTotal;
    
    public Website(String newWebsiteName)
    {
        websiteName = newWebsiteName;
    }

    // lines omitted

    public void checkout(Member purchase, Holiday chosen) 
    {
        if (checkHitDiscount() == true)
        {
            System.out.println("Congrtulations you are eligible for 10% discount!");
            salesTotal = chosen.price;
        }
        else
        {
            System.out.println("successful completion of the transaction");
            salesTotal = chosen.price;
        }
    }

Class 成员:

public class Member {
    private String email;
    public int membershipNumber;
    Holiday holiday;
    Website website;

    public Member(String newEmail, int newMembershipNumber)
    {
        email = newEmail;
        membershipNumber = newMembershipNumber;
    }

    // lines omitted

    public void payForHoliday(Member purchase, Holiday chosen) 
    {
         // This method needs to run the "checkout()" method in Website class
    }

在执行另一个 class 的(非静态)成员之前,您需要一个作为该 class.

实例的对象

换句话说,您的结帐方法是一种在 特定网站上运行的操作,因为它被定义为该网站的成员class.

因此,调用它需要

    Website xyz = …. something that delivers a website …;

然后你可以调用

    xyz.checkout(…);

“提供网站的东西”是适合您的应用程序设计的任何东西。也许它就像 'new Website()' 一样简单,但如果不知道网站在您的设计中实际代表什么,就无法分辨。


您缺少有关其工作原理的详细信息。我会提供一些猜测。首先,我假设网站有更多的成员,也就是说,每个可能的网站都有一个以上的成员。

这意味着需要有一种方法可以将会员连接到网站。需求将此指出为 'problem' - 我们可以推断您应该解决问题。

一种方法是让成员构造函数告诉您网站:

public Member(String newEmail, int newMembershipNumber, Website newSite)
{
    email = newEmail;
    membershipNumber = newMembershipNumber;
    website = newSite;
}

那么你可以这样做:

public void payForHoliday(Member purchase, Holiday chosen) 
{
     website.checkout(purchase, chosen);
}

但这对我来说意义不大 - 为什么此方法需要一个与包含它的 Member 不同的 'Member' 参数?你确定你没记错这个细节吗?这更合理:

public void payForHoliday(Holiday chosen) 
{
     website.checkout(this, chosen); // 'this' means the current Member
}

但是我们不能说这是否是预期的方法,因为问题中没有足够的细节。如何使用这些东西?是什么创造了会员?创建会员的代码是否知道它正在为其创建会员的特定网站?

问题是我试图添加一个相同 class Member 的对象来调用另一个 class Website 的方法,它有一个Member purchase 作为参数。

所以为了正确调用那个方法,我使用了这段代码:

    public void payForHoliday(Holiday test) 
    {
       website.checkout(this, test);
    }
  • 为了指向Websiteclass中的方法checkout(),我使用了一个address(Website website)声明为instance variableMember class.

  • this关键字告诉程序参数是对象本身,也就是调用方法。

  • test 变量作为参数放置,因为它是另一个 class 的指针。 (为了避免和checkout()方法中的变量名冲突,我把变量名改成了别的名字)