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

7cwmlq89  于 2021-07-11  发布在  Java
关注(0)|答案(2)|浏览(398)

我尝试不只是通过手动输入值来调用方法,而是从另一个类运行另一个类的方法。我试图通过研究类似的问题来找出解决办法,但它们在这方面对我没有帮助。
我可能错了,请原谅我,但这个要求是要求我调用一个参数的方法,我不知道怎么做。
这是要求:
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
    }
fhity93d

fhity93d1#

在执行另一个类的(非静态)成员之前,需要一个作为该类示例的对象。
换句话说,checkout方法是在特定网站上操作的操作,因为它被定义为website类的成员。
因此,你需要

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

然后你就可以打电话了

xyz.checkout(…);

“提供网站的东西”是任何适合你的应用程序设计的东西。也许它就像“new website()”一样简单,但是如果不知道一个网站在你的设计中实际代表了什么,就不可能分辨出来。
你不知道该怎么做。我将提供一些猜测。首先,我假设web站点有更多的成员,也就是说,每个可能的web站点有多个成员。
这意味着需要有一种方法将成员连接到网站。需求指出这是一个“问题”-我们可以推断你应该解决这个问题。
一种方法是让成员构造函数告诉您网站:

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
}

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

k4emjkb1

k4emjkb12#

问题是我试图添加同一类的对象 Member 从另一个类调用方法 Website ,它有一个 Member purchase 作为参数。
为了正确调用该方法,我使用了以下代码:

public void payForHoliday(Holiday test) 
    {
       website.checkout(this, test);
    }

用于指向方法 checkout()Website 同学们,我用了一个 address (网站)宣布为 instance variableMember 班级。
这个 this 关键字告诉程序参数是调用方法的对象本身。
这个 test 变量作为参数放置,因为它是另一个类的指针(我将变量名更改为另一个名称,以避免与 checkout() 方法)

相关问题