Я пытаюсь заставить метод суперкласса запускаться на методах / полях подкласса при вызове подклассом.Например,
public class CoffeeMachine() {
protected int cost = 3;
protected int getCost() {
return cost;
}
}
public class FancyCoffeeMachine() extends CoffeeMachine{
protected int cost = 6;
}
main{
FancyCoffeeMachine expensive = new FancyCoffeeMachine();
System.out.println(expensive.getCost());
}
Я хотел бы, чтобы это напечатало 6, но вместо этого оно печатает 3.Я хочу сделать это как можно более сухим, поэтому я стараюсь избегать создания второго метода getCost ().Есть какой-либо способ сделать это?Как я могу получить метод суперкласса для использования переменных подкласса при вызове подклассом?То же самое происходит с методами: если у меня есть
public class makeCoffee() {
System.out.println("Coffee cost " + this.getCost());
}
, на выходе будет «Coffee cost 3», даже когда я вызываю makeCoffee на FancyCoffeeMachine.Почему это?Как я могу это исправить?Или есть лучший способ реализовать эту объектную структуру, которая полностью обходит эту ошибку?