Иллюстрированный самоучитель по VB.NET



         

Наследование и интерфейсы


Наследование и интерфейсы

  • Основы наследования
  • Знакомство с наследованием
  • Обращение к функциональности базового класса

  • Переопределение свойств и методов
  • Как стать начальником?
  • Просмотр иерархии наследования

  • Правила преобразования и обращения к членам классов в иерархии наследования
  • Полиморфизм на практике
  • Замещение
  • Абстрактные базовые классы
  • Пример: класс 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 и С++.


    Содержание    Вперед