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