[英]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.