簡體   English   中英

如何從另一個類java調用帶有參數的方法作為對象?

[英]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 variableaddress (網站網站)。

  • this關鍵字告訴程序參數是對象本身,它正在調用 方法。

  • 由於是來自另一個類的指針,因此test變量作為參數放置。 (為了避免與checkout()方法中的變量名沖突,我將變量名更改為另一個名稱)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM