[英]How to call a method with parameters as objects from another class java?
我试图不只是通过手动输入值来调用该方法,而是从另一个类运行另一个类的方法。 我试图通过查看类似的问题来找出解决方案,但在这种情况下它们对我没有帮助。
我可能错了请原谅我,但这个要求是要求我调用一个带参数的方法,我不明白该怎么做。
这是要求:
a) 向 Member 类添加一个 payForHoliday() 方法。 该方法将简单地调用网站类中的一个方法来支付假期费用(即记录与网站的交易)。 在这里我们遇到了一个问题,因为来自 Member 类的对象没有记录该成员登录到哪个网站。
班级网址:
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
}
在您可以执行另一个类的(非静态)成员之前,您需要一个作为该类实例的对象。
换句话说,您的 checkout 方法是在特定网站上运行的操作,因为它被定义为网站类的成员。
因此,要调用它,您需要
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);
}
但这对我来说没有多大意义 - 为什么这个方法需要一个与包含它的成员不同的“成员”参数? 你确定你有那个细节吗? 这是更合理的:
public void payForHoliday(Holiday chosen)
{
website.checkout(this, chosen); // 'this' means the current Member
}
但是,这是否是有意的方法,我们不能说,因为问题中没有足够的细节。 这些东西是如何使用的? 什么创建会员? 创建会员的代码是否知道它正在成为会员的特定网站?
问题是我试图添加同一个类Member
的对象来调用另一个类Website
的方法,该类有一个Member purchase
作为参数。
因此,为了正确调用该方法,我使用了以下代码:
public void payForHoliday(Holiday test)
{
website.checkout(this, test);
}
为了指向Website
类中的checkout()
方法,我使用了在Member
类中声明为instance variable
的address
(网站网站)。
this
关键字告诉程序参数是对象本身,它正在调用 方法。
由于是来自另一个类的指针,因此test
变量作为参数放置。 (为了避免与checkout()
方法中的变量名冲突,我将变量名更改为另一个名称)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.