Переопределение абстрактного метода базового класса - PullRequest
0 голосов
/ 11 апреля 2010

У меня есть абстрактный класс с некоторыми методами, включая абстрактный метод (Execute ()). Этот метод переопределяется в дочернем классе. Теперь происходит событие (где-то в приложении), и для этого события есть обработчик в базовом классе. И в этом обработчике я вызываю Execute. Теперь, метод chilobject выполняется. Я немного запутался, как это работает под капотом?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2010

Один из способов думать об этом с точки зрения передачи сообщений; вызов Execute() внутри метода экземпляра означает, что «сообщение» Execute отправляется текущему объекту (т.е. this). Поскольку текущий объект является экземпляром дочернего класса, он обрабатывает полученное сообщение «Execute()», как определено для всех экземпляров этого класса, независимо от того, где написана команда для отправки этого сообщения.

(Если ваш вопрос заключался в том, как это технически реализовано, то извините за упрощенный ответ. В самых общих чертах класс объекта хранится вместе с остальными его данными, и это используется для поиска соответствующего метода звонить, т.е. как реагировать на определенное сообщение для этого объекта.)

0 голосов
/ 11 апреля 2010

Это полиморфизм времени выполнения, также называемый динамическое связывание .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...