на начало
На главную страницу
Форум   

Статья :: Конечные классы


Конечные классы

Ключевое слово _sealed (конечный) указывает на то, что класс или структуру нельзя использовать в качестве базового типа. Другими словами, в иерархии наследования этот класс или структура— терминальный тип. Ключевое слово _sealed (конечный) можно также применять к отдельному методу класса. Конечный метод не может быть переопределен в производных классах. В стандарте C++ подобная возможность не предусмотрена; однако в Java такая возможность реализована с помощью ключевого слова final (конечный). Следующий фрагмент кода является некорректным, так как конечный класс не может быть базовым:

_sealed class SomeSealedClass
{
};
class SomeDerivedClass : public SomeSealedClass // ошибка
{
};

Одной из причин использования ключевого слова _sealed (конечный) является повышение стабильности работы классов за счет препятствования слишком самоуверенным и/или недостаточно квалифицированным программистам испортить важные и сложные элементы поведения классов в производных от них. Другой аргумент использования _sealed (конечный) — предотвращение попыток изменить возможности, обеспечивающие безопасность. Например, предопределенный класс string (Строка) объявлен как конечный, а вдобавок к тому — еще и как неизменяемый (он не содержит общедоступных методов или элементов данных, что могло бы позволить изменять его содержимое). Это делает его идеальным для использования в защитных целях, например, для хранения паролей. При попытке скомпилировать следующий код будет выдана ошибка, так как класс string (Строка) является конечным:

// не допустимо, потому что Система::Строка - конечный класс
class MyString : public String
// класс MyString: общедоступная Строка
{
};


Конечные классы

страницы в данном разделе 
Глава 3. Программирование на управляемом C++ Глава 3. Программирование на управляемом C++
Место C++ в мире .NET Использование расширений управляемого C++
Ваша первая программа на управляемом C++.NET Программа HelloWorld (Привет, мир)
Директива #using и оператор using Стандартный ввод-вывод
Класс System:: string (Система::Строка) Класс System::Array (Система::МAССИВ)
Программа Hotel (Гостиница) Отображение C++ на спецификацию общего (универсального) языка (CLS) и .NET Framework
Типы данных C++ и общеязыковая среда выполнения CLR Типы данных C++ и .NET Framework
Программирование на C++ для платформы .NET Управляемые и неуправляемые типы
Управление сборкой мусора Типовая безопасность
Типы значений Абстрактные типы
Интерфейсы Упаковка и распаковка примитивных типов данных
Делегаты События
Свойства Закрепление управляемых объектов
Конечные классы Управляемое приведение типов
Определение ключевых слов в качестве идентификаторов Обработка исключений
Атрибуты C++ Резюме


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста