如何从另一个 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);
}
为了指向Website
class中的方法checkout()
,我使用了一个address
(Website website)声明为instance variable
在 Member
class.
this
关键字告诉程序参数是对象本身,也就是调用方法。
test
变量作为参数放置,因为它是另一个 class 的指针。 (为了避免和checkout()
方法中的变量名冲突,我把变量名改成了别的名字)
我试图不只是通过手动输入值来调用方法,而是 运行 来自另一个 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);
}
为了指向
Website
class中的方法checkout()
,我使用了一个address
(Website website)声明为instance variable
在Member
class.this
关键字告诉程序参数是对象本身,也就是调用方法。test
变量作为参数放置,因为它是另一个 class 的指针。 (为了避免和checkout()
方法中的变量名冲突,我把变量名改成了别的名字)