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