我尝试不只是通过手动输入值来调用方法,而是从另一个类运行另一个类的方法。我试图通过研究类似的问题来找出解决办法,但它们在这方面对我没有帮助。
我可能错了,请原谅我,但这个要求是要求我调用一个参数的方法,我不知道怎么做。
这是要求:
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
}
2条答案
按热度按时间fhity93d1#
在执行另一个类的(非静态)成员之前,需要一个作为该类示例的对象。
换句话说,checkout方法是在特定网站上操作的操作,因为它被定义为website类的成员。
因此,你需要
然后你就可以打电话了
“提供网站的东西”是任何适合你的应用程序设计的东西。也许它就像“new website()”一样简单,但是如果不知道一个网站在你的设计中实际代表了什么,就不可能分辨出来。
你不知道该怎么做。我将提供一些猜测。首先,我假设web站点有更多的成员,也就是说,每个可能的web站点有多个成员。
这意味着需要有一种方法将成员连接到网站。需求指出这是一个“问题”-我们可以推断你应该解决这个问题。
一种方法是让成员构造函数告诉您网站:
然后你可以这样做:
但这对我来说意义不大-为什么这个方法需要一个与包含它的成员不同的'member'参数?你确定你知道那个细节吗?这更合理:
但我们不能说这是不是有意的,因为这个问题没有足够的细节。这些东西怎么用的?什么创造了成员?创建成员的代码是否知道它为哪个特定网站创建成员?
k4emjkb12#
问题是我试图添加同一类的对象
Member
从另一个类调用方法Website
,它有一个Member purchase
作为参数。为了正确调用该方法,我使用了以下代码:
用于指向方法
checkout()
在Website
同学们,我用了一个address
(网站)宣布为instance variable
在Member
班级。这个
this
关键字告诉程序参数是调用方法的对象本身。这个
test
变量作为参数放置,因为它是另一个类的指针(我将变量名更改为另一个名称,以避免与checkout()
方法)