// codeart.ru / Работаем с кодом / В защиту наследования Форум

В защиту наследования rss подписка

Автор: Evgeniy Sergeev

Из предыдущих постов могло сложиться впечатление, что я негативно настроен к наследованию классов. На самом деле это не так.

Я считаю, что наследование — это замечательный инструмент разработки объектно ориентированных программ, однако, относиться к нему стоит с подобающим уважением и осторожностью. Далее я расскажу о некоторых преимуществах наследования.

Самое главное преимущество заключается в том, что наследование классов позволяет не только не переписывать (дублировать) существующий код, но и создавать семейства классов с единым интерфейсом. Это важно хотя бы потому, что от этого зависит полиморфизм.

Наверное, многие обратили внимание, что я часто упоминаю о создании единого интерфейса для набора классов. Все дело в том, что создание хорошего интерфейса — задача действительно очень важная. Напомню, что программировать нужно в соответствии с интерфейсом, а не реализацией!

У наследования интерфейсов есть два важных достоинства:

Эх, кажется, я опять много говорю про наследование интерфейсов и мало про наследование классов.

Я считаю, что наследование конкретных классов может применяться при неглубоком наследовании, т.е. когда в цепочке наследования всего один или два уровня. Лучше когда наследование конкретных классов идет вширь, а не вглубь. Например, есть класс «стол», от него порождаются классы «круглый стол», «пластиковый стол» и т.д.

Но даже в приведенных случаях относиться к наследованию конкретных классов стоит с большим вниманием. Особенно при наследовании классов, полученных из сторонних библиотек, например, из библиотек фреймворка или cms.

Leave a Reply

« »