Наследование и интерфейсы
Наследование и интерфейсы
Основы наследования
Знакомство с наследованием
Обращение к функциональности базового класса
Переопределение свойств и методов
Как стать начальником?
Просмотр иерархии наследования
Правила преобразования и обращения к членам классов в иерархии наследования
Полиморфизм на практике
Замещение
Абстрактные базовые классы
Пример: класс CollectionBase
Корневой базовый класс Object
Основные методы класса Object
Equals и ReferenceEquals
МетодToString
Функция GetType и рефлексия
MemberWiseClone
Проблема неустойчивости базовых классов и контроль версии
Интерфейсы
Механика реализации интерфейса
Нетривиальное применение интерфейсов
Выбор между интерфейсами и наследованием
Важнейшие интерфейсы .NET Framework
ICloneable
Disposable
Коллекции
For Each и интерфейс lEnumerable
ICollection
IList
IDictionary
IComparable
Интерфейс IComparer
В предыдущей главе кратко упоминались два столпа объектно-ориентированного программирования в VB .NET: наследование реализации, обеспечивающее возможность многократного использования кода, и наследование интерфейсов, то есть «контракт», которому должны соответствовать некоторые аспекты поведения класса. Обе разновидности наследования будут подробно рассмотрены в этой главе.
Для начала мы покажем, как в VB .NET организовано наследование реализации. К сожалению, при изучении этой темы никак нельзя ограничиться поверхностным знакомством. Дело в том, что непродуманные действия программиста при наследовании реализации приводят к весьма неприятным последствиям, поэтому в этой главе мы потратим довольно много времени, показывая, как избежать этих опасностей за счет тщательного проектирования иерархии наследования.
После описания механики и основных принципов наследования реализации мы во всех подробностях изучим класс Object, являющийся предком всех объектов .NET. Завершая описание наследования реализации, мы покажем, как в .NET решается проблема неустойчивости базовых классов, вызывающая немало хлопот при наследовании реализации в других объектно-ориентированных языках — таких, как Java и С++.
Не пугайтесь термина «проблема неустойчивости базовых классов»; речь идет всего лишь о том, что непродуманные изменения базового класса могут нарушить работу производных классов.
С этого момента под термином «наследование» будет пониматься наследование реа-лизации. Если речь пойдет о программном коде, использующем наследование интерфейсов, мы будем употреблять термин «реализация интерфейсов». На первый взгляд терминология кажется крайне запутанной, но большинство программистов быстро привыкают к этим сокращенным обозначениям.
От наследования мы перейдем к реализации интерфейсов в VB .NET. В завершение этой главы вы узнаете, как использовать важнейшие интерфейсы .NET Framework IComparable, ICloneable и IDisposable.
Программисты с опытом использования интерфейсов BVB5 и VB6 будут приятно удивлены тем, насколько понятнее выглядят программы при реализации интерфейсов в VB .NET. В синтаксисе произошли заметные изменения к лучшему.
Все публикации раздела