Мне дали 2 класса для задания: Sale and DiscountSale (который распространяется на продажу). Я должен создать новый класс MultiItemSale, который создаст массив (корзину покупок) объектов Sale и DiscountSale. Но я не могу получить методы от DiscountSale для работы с функциями DiscountSale внутри массива.Методы устранения неполадок на объектах полиморфного массива в Java
Класс Продажа (базовый класс) имеет некоторые методы, setName() и setPrice() в частности.
класс DiscountSale расширяет продажу, поэтому он может использовать setName() и setPrice(), но также имеет setDiscount() между прочим.
в MultiItemSale:
Sale[] shoppingCart = new Sale[numOfItems];
Из моего понимания, так как DiscountSale распространяется Продажа, как продажа и объекты Продажи Скидки должна быть в состоянии в пределах этого массива, правильно?
Я использую цикл for, чтобы узнать, снижен ли предмет. Если это не так, то:
shoppingCart[i] = new Sale();
, если она со скидкой:
shoppingCart[i] = new DiscountSale();
И это, когда я начинаю работать в вопросах:
следующие работы, потому что SetName() и setPrice() из класса Продажи
Кроме того, это все под оператором if, который говорит, что если товар дисконтирован, то:
shoppingCart[i] = new DiscountSale();
shoppingCart[i].setName(name);
shoppingCart[i].setPrice(price);
Но если я пытаюсь сделать это, я получаю ошибки, потому что setDiscount() от DiscountSale:
shoppingCart[i].setDiscount(discount);
Eclipse, говорит мне, «Метод setDiscount (дважды) не определено для типа продажи». Если
shoppingCart[i] = new DiscountSale();
Почему я не могу использовать метод DiscountSale для этого объекта? Я думаю, что я неправильно понимаю, как работают полиморфизм и массивы.
Возможный дубликат http://stackoverflow.com/questions/2559854/accessing-subclass-members-from-a-superclass-pointer-c – cxw