簡體   English   中英

新程序員,需要幫助。 將從超類繼承的字段分配給子類方法中的變量

[英]New programmer, need help. Assigning a field inherited from superclass to a variable inside a subclass' method

我想將 basePrice(它是從 Hamburger 類繼承的字段)分配給覆蓋的 addItems() 方法內的雙 newPrice 變量。 由於該領域存在,這在超類中不是問題。 我只是輸入“double newPrice = this.basePrice;”。 但是,這在子類中不起作用。 我是編程新手,任何幫助表示贊賞。

public class HealthyBurger extends Hamburger{

    public HealthyBurger(String meat, double basePrice) {
        super("Healthy Burger", "brown rye", meat, basePrice);
    }

    public void addItems() {
        double newPrice = ???HOW TO ASSISGN basePrice HERE???;
    }
}

要從派生類訪問this.basePrice ,必須在基類中protected basePrice屬性。

然后你可以這樣做:

this.basePrice = ...; // whatever you want here

很可能有一個名為getBasePrice()的方法,您應該調用它:

this.getBasePrice();
// instead of
this.basePrice;

如果沒有,請到漢堡包的源代碼( Hamburger.java )中添加此方法。

解釋

如果在HealthyBurger類中編寫this.basePrice時出現錯誤,則意味着Hamburger類中的字段要么被標記為private ,要么它 BOTH [1] 在另一個包中,並且 [2] 已聲明為沒有訪問修飾符(這是 java-ese 用於稱為包私有的概念 - 意思是,只有包內的東西才能接觸它,而你不在那里)。

一種解決方法是進入Hamburger.java的源代碼並使其protected (這意味着:此文件中的任何源代碼、同一包中的所有類以及任何子類 - 最后一個將為你),但是將字段設為私有是更慣用的 Java,所以保持原樣,並創建這個稱為“getter”的方法,並且可能應該是public

注意:如果你覺得寫這些很乏味,總有Lombok

您可以只創建在父類中定義的getBasePrice()方法或僅聲明該字段:

protected double basePrice

你可以只分配double newPrice = this.basePrice;

暫無
暫無

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

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