Я натолкнулся на следующий пункт the advantage of object composition over class inheritance. Но я часто вижу следующее предложение во многих статьях
В составе объекта функциональность приобретается динамически во время выполнения объектами, собирающими ссылки на другие объекты. Преимущество этого подхода заключается в том, что реализации можно заменить во время выполнения. Это возможно, потому что доступ к объектам осуществляется только через их интерфейсы, поэтому один объект может быть заменен другим до тех пор, пока они имеют один и тот же тип.
Но сомнение может быть наивным, так как я новичок. Как реализация может быть заменена во время выполнения? Если мы напишем новую строку кода, разве нам не нужно компилировать, чтобы отразить изменение? Тогда что означает replacing at runtime? довольно запутанным.
Или любая другая магия, за сценой происходят события. Может кто-нибудь ответить.