Всем привет. Запутался в вопросах раннего/позднего связывания в java. Допустим есть базовый класс Animal, у которого есть метод eat(). Также у него есть наследник Cat, с переопределённым методом eat().
Теперь, если где-то есть публичный метод foo(Animal animal), внутри которого вызывается метод eat() и я передаю в этот метод экземпляр класса Cat, то метод eat() вызовется именно у класса Cat. Собственно, это и есть механизм позднего связывания. В остальных случаях - связывание раннее. Отсюда вопрос: судя по информации, что я прочитал, если метод перегружен, то в таком случае используется раннее связывание. Если один из перегруженных методов будет foo(Animal animal) (внутри также вызывается метод eat()), а я в него передам Cat, то чей метод eat() внутри вызовется? Заранее спасибо за ответ или ссылку где можно подробнее почитать про данный вопрос.