【发布时间】:2020-09-20 23:23:23
【问题描述】:
我有一个名为 Drinks 的用户定义包,
其中有几个类
Drinks
Water
Cocoa (extends Water)
Coffee (extends Water)
CalculateDrinks
编译包后,我在默认包中创建了一个名为Cappuccino的类,扩展了Coffee,其中包含这些类。
Default
Cappuccino
TestPackage
在 CalculateDrinks 中,它有一个名为 calculatePrice() 的方法,它计算每个饮料的 getPrice() 的总和,包括 Cappuccino 类(它也有 getPrice 方法)。
请问,CalculateDrinks 类的calculatePrice() 方法如何知道Cappuccino 类的getPrice() 方法?
任何帮助,将不胜感激。如果您想查看源代码,请告诉我。
编辑: 添加了一些重要的代码部分
TestPackage.java
public class TestPackage{
public void static main(String[] args){
Coffee coffee = new Coffee(150); //that is the price
Cappuccino cap = new Cappuccino("snowman");
Drinks drinks = {coffee, cap};
CalculateDrinks cal = new CalculateDrinks(drinks);
System.out.println("The total price of all drinks is " + cal.getTotalPrice()); //it should return 350
}
}
CalculateDrinks.java
public class CalculateDrinks{
private int totalPrice;
private Drinks drinks[];
CalculateDrinks(Drinks drinks[]){
this.drinks = drinks;
calculatePrice();
}
public void calculatePrice(){
for (Drinks drink in drinks){
totalPrice += drink.getPrice();
}
}
public int getTotalPrice(){
return totalPrice;
}
}
Cappuccino.java
public class Cappuccino extends Coffee{
private String pattern;
Cappuccino(String pattern){
this.pattern = pattern;
}
public int getPrice(){
return super.getPrice() + 50;
}
}
【问题讨论】:
-
您能提供一个minimal reproducible example 来说明吗?
-
你到底是什么意思?它怎么知道
Cappuccino?除非TestDrinks提到它,或者它把它作为参数或类似的东西传入它不会知道Cappuccino。你能告诉我们TestDrinks类在你的例子中是什么样子的吗? -
@FredLarson 我已经添加了源代码,你能帮忙吗?
标签: java class oop package extends