Теория, позволяющая работать с вышеуказанным кодом, называется принципом замены : когда Derived
является подтипом Base
, это формирует отношение "есть",Принцип подстановки постулирует, что там, где ожидается экземпляр Base
, его можно заменить экземпляром Derived
.
. Причина, по которой вы не сможете получить доступ к свойствам и методам класса Derive
позжев том, что (по крайней мере, для компьютера) нет никаких указаний на то, что переменная типа Base
содержит экземпляр типа Derive
, который позволил бы получить доступ к этим свойствам / методам.Если вы возьмете другой класс DerivedToo : Base
, у которого есть другие методы, отличные от Derive
, вы быстро увидите, как программа может сломаться, если предположить, что переменная Base
содержит экземпляр Derive
.