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