Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему вызываются не все методы?

Хаку Ученик (32), на голосовании 1 год назад
class animal {
eat() {животное кушает}
}

class Dog наследует Animal {
eat() {собака кушает} #переопределенный метод
bark() {собака гавкает}
}

Animal animal = new Dog
в переменной animal находится объект Dog
этот объект хранит все члены класса Dog
то есть метод eat() {"собака кушает"}
и метод bark() {"собака гавкает"}
но почему этот метод bark() не вызывается?
Голосование за лучший ответ
Терр Онтал Мудрец (12753) 1 год назад
Нужно привести к типу dog. Что ты имеешь ввиду "не вызывается"? Оно не скомпилируется, если ты попробуешь его вызвать от animal
Оракул Оракул (62089) 1 год назад
Потому что метода bark нет в Animal. Надо отличать сам объект в памяти и тип ссылки. У вас тип ссылки на Animal - доступны только его публичные методы.
Похожие вопросы