Абстрактные и запечатанные классы и члены классов (руководство по программированию на C#)

Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой. Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги. Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги. Абстрактное ключевое слово позволяет создавать классы и члены класса, которые являются неполными и должны быть реализованы в производном классе. Запечатаемое ключевое слово позволяет предотвратить наследование класса или определенных членов класса, которые ранее были помечены виртуальными. Классы можно объявить как абстрактные, поставив ключевое слово abstract перед определением класса. Рассмотрим пример. Создавать экземпляры абстрактного класса нельзя. Цель абстрактного класса — предоставить общее определение базового класса, который могут использовать несколько производных классов. Например, библиотека классов может определить абстрактный класс, используемый в качестве параметра для многих его функций, и требовать, чтобы программисты использовали ее для предоставления собственной реализации класса путем создания производного класса. Абстрактные классы также могут определять абстрактные методы. Это достигается путем добавления ключевого слова abstract до возвращаемого типа метода. Рассмотрим пример. Абстрактные методы не имеют реализации, поэтому за определением метода следует точка с запятой вместо обычного блока методов. Производные классы абстрактного класса должны реализовывать все абстрактные методы. Если абстрактный класс наследует виртуальный метод от базового класса, абстрактный класс может переопределить виртуальный метод абстрактным методом. Рассмотрим пример. virtual Если метод объявленabstract, он по-прежнему является виртуальным для любого класса, наследуемого от абстрактного класса. Класс, производный от класса с абстрактным методом, DoWork не может получить доступ к исходной реализации метода. В предыдущем примере класс F не может вызвать метод DoWork в классе D. Таким образом, абстрактный класс может заставить производные классы предоставлять новые реализации для виртуальных методов. Классы можно объявить как запечатанные , поместив ключевое слово sealed перед определением класса. Рассмотрим пример. Запечатанный класс нельзя использовать в качестве базового класса. По этой причине он также не может быть абстрактным классом. Запечатанные классы предотвращают производность. Так как они никогда не могут использоваться в качестве базового класса, некоторые оптимизации во время выполнения могут немного ускорить вызов запечатанных членов класса. Метод, индексатор, свойство или событие в производном классе, переопределяющий виртуальный член базового класса, может объявить этот элемент как запечатанный. Это отрицает виртуальный аспект члена для любого дальнейшего производного класса. Это достигается путем добавления ключевого слова sealed перед ключевым словом переопределение в объявлении члена класса. Рассмотрим пример. Были ли сведения на этой странице полезными? Хотите попробовать использовать Ask Learn для уточнения или руководства по этой теме? Были ли сведения на этой странице полезными? Хотите попробовать использовать Ask Learn для уточнения или руководства по этой теме?
Источник: learn.microsoft.com — learn.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members