Поделиться через


Разработка абстрактных классов

Абстрактные классы никогда не должны порождать экземпляры, поэтому важно правильно определять их конструкторы. Крайне важно обеспечить правильную работу абстрактного класса и возможность расширения его функциональности. Выполнение следующих рекомендаций позволит быть уверенными в том, что абстрактные классы разработаны правильно и при реализации будут работать, как ожидается.

Не определяйте конструкторы с атрибутами "public" или "protected internal" ("Protected Friend" в Visual Basic) в абстрактных типах.

Конструкторы с видимостью public или protected internal используются для типов, для которых могут создаваться экземпляры. Из абстрактных типов никогда не могут создаваться экземпляры.

Определите защищенный или внутренний конструктор в абстрактных классах.

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

Предоставьте хотя бы один конкретный тип, наследующий от каждого поставляемого абстрактного класса.

Такой метод помогает разработчикам библиотек обнаруживать проблемы или недоработки в коде абстрактного класса. Этот также означает, что при написании сценариев высокого уровня разработчики, которые не понимают принципов абстрактных классов и наследования, могут использовать конкретный класс, не изучая понятий абстрактного класса. Например, платформа .NET Framework содержит абстрактные классы WebRequest и WebResponse для отправки и получения запросов от универсального идентификатора ресурса (URI). В качестве одной из конкретных реализаций для этих абстрактных классов в среде .NET Framework содержатся классы HttpWebRequest и HttpWebResponse, которые реализуют эти абстрактные классы для протокола HTTP.

Фрагменты — © Корпорация Майкрософт (Microsoft Corp.), 2005. Все права защищены.

Фрагменты — © Addison-Wesley Corporation. Все права защищены.

Для дополнительной информации о разработке руководящих принципов, смотрите "руководства по разработке рамок: Конвенций, идиомы и шаблоны для повторного использования.NET библиотек"книга, Кшиштоф Cwalina и Брэд Абрамс, опубликованных Addison-Wesley, 2005 года.

См. также

Основные понятия

Выбор между классами и интерфейсами

Другие ресурсы

Правила разработки типов

Руководство по разработке библиотек классов