Ваш вопрос касается одной из самых важных частей объектно-ориентированного программирования: полиморфизм .
Derived
является подтипом Base
. Это означает, что все, что Base
может сделать, Derived
также может сделать. Часто Derived
является более конкретным, чем Base
: он работает на подмножестве того, что делает Base
, но делает это подмножество намного лучше, чем то, что делает Base
.
Подумайте над примером.
Подумайте о написании графической программы. Возможно, у вас есть класс ClosedShape
и метод внутри него fill()
. Можно создать очень общий метод, который может заполнить любую замкнутую фигуру ... но обычно этот метод занимает память, и он может быть медленным.
Возможно, у вас есть другой класс, Square
. Теперь заполнение квадратов очень просто и очень быстро: это два вложенных цикла. Поскольку Square
делает все, что делает ClosedShape
, он может наследовать от ClosedShape
.
Почему важен полиморфизм? Подумайте о многих видах ClosedShape
: треугольниках, шестиугольниках и так далее. Если вы хотите заполнить все из них, просто сделайте:
for (i=0; i<num; i++) {
cs[i].fill();
}
Все они будут использовать свою собственную версию fill()
!