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

如何从另一个java类调用参数为对象的方法?,java,object,methods,call,Java,Object,Methods,Call,我试图不只是通过手动输入值来调用该方法,而是从另一个类运行另一个类的方法。我试图通过研究类似的问题来找到解决方案,但它们在这方面对我没有帮助 我可能错了,请原谅我,但这个要求要求我调用一个带参数的方法,我不知道该怎么做 这是要求: a) 将payForHoliday()方法添加到成员类。此方法只需调用Website类中的一个方法来支付假期费用(即记录与网站的交易)。这里我们遇到了一个问题,因为成员类中的对象没有记录成员登录的网站 班级网站: public class Website {

我试图不只是通过手动输入值来调用该方法,而是从另一个类运行另一个类的方法。我试图通过研究类似的问题来找到解决方案,但它们在这方面对我没有帮助

我可能错了,请原谅我,但这个要求要求我调用一个带参数的方法,我不知道该怎么做

这是要求:

a) 将payForHoliday()方法添加到成员类。此方法只需调用Website类中的一个方法来支付假期费用(即记录与网站的交易)。这里我们遇到了一个问题,因为成员类中的对象没有记录成员登录的网站

班级网站

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;
        }
    }
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
    }
类别成员

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;
        }
    }
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
    }
在执行另一个类的(非静态)成员之前,需要一个作为该类实例的对象

换句话说,您的签出方法是在特定网站上操作的操作,因为它被定义为网站类的成员

因此,要称呼它,你需要

    Website xyz = …. something that delivers a website …;
然后你可以打电话

    xyz.checkout(…);
“交付网站的东西”是任何适合您的应用程序设计的东西。也许它和“new Website()”一样简单,但如果不知道网站在您的设计中实际代表了什么,就无法判断


您缺少了该如何工作的详细信息。我将提供一些猜测。首先,我假设网站中有更多的成员,也就是说,每个可能的网站都有多个成员

这意味着需要有一种方法将成员连接到网站。需求指出这是一个“问题”——我们可以推断您应该解决这个问题

一种方法是让会员建造师告诉您网站:

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'参数?你确定你没有弄错那个细节吗?这更合理:

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

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

问题是,我试图添加同一类的对象
成员
,以从另一类
网站
调用该方法,该类的参数为
成员购买

为了正确调用该方法,我使用了以下代码:

    public void payForHoliday(Holiday test) 
    {
       website.checkout(this, test);
    }
  • 为了指向
    网站
    类中的方法
    checkout()
    ,我使用了
    地址
    (网站网站)在
    成员
    类中声明为
    实例变量

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

  • test
    变量作为参数放置,因为它是来自另一个类的指针。(我将变量名更改为另一个名称,以避免与
    checkout()
    方法中的名称冲突)


我已经尝试过这种方法,它要求我添加一个字符串,因为我在Website类中有一个构造函数来初始化网站的名称。问题是,我不想处理其他变量,但Web站点类中的
checkout()
方法至少是需求所要求的。@您确定这就是需求所要求的吗?只能从
网站
类的实例调用该方法。如果为了构造该实例,您需要提供一个字符串,我非常怀疑该要求是否会强制您不提供该字符串。事实上,该要求只提到了网站的名称,当它说
成员
类没有跟踪它时,但它并没有说你不应该以某种方式提供它,比如通过用户的输入。如果可能的话,也许你应该向给你任务的人寻求澄清。我更新了这个问题,包括了字段和构造函数。我已经在
成员
类(网站网站)中添加了
网站
类作为实例变量。成员中的某些内容需要将网站分配给实例变量。然后你可以打电话到网站。结帐(…)。我什么都试过了,我不知道该怎么办。他从未教过我们如何调用mutator方法,只教过accessor方法。