|
Введение в классы - Изолированные классы (часть 11)
Изолированные классы
Если вы хотите быть уверены, что класс никогда не будет использован как базовый, при определении класса примените модификатор sealed.
Единственное ограничение: абстрактный класс не может быть изолированным, так как в силу своей природы предназначен для использования в качестве базового. И еще. Хотя изолированные классы предназначены для предотвращения непреднамеренного создания производных классов, определение класса как изолированного позволяет выполнить оптимизацию периода выполнения. В частности, поскольку компилятор гарантирует отсутствие у класса любых производных классов, есть возможность преобразования виртуальных вызовов для изолированного класса в невиртуальные вызовы. Вот пример определения класса как изолированного:
using System;
sealed class MyPoint
{
public MyPoint(int x, int y)
{
this.x = x;
this.у = у;
private int X;
public int x;
get x;
return this.X;
}
set
this.X = value;
private int Y;
public int у
{
get
return this.Y;
}
set
this.Y = value;
class SealedApp
{
public static void Main()
{
MyPoint pt = new MyPoint(6,16);
Console.WriteLine("x = {0}, у - {1}", pt.x, pt.y);
}
}
|
Здесь использован модификатор доступа private для внутренних членов класса X и Y. В результате применения модификатора protected компилятор выдаст предупреждение, так как защищенные члены видимы производным классам, а, как вам известно, у изолированных классов производных классов нет.
Предыдущая стр.   
Оглавление   
Следующая стр.
Средняя оценка:     (1,57 - 7 голосов) Для оценки необходимо зарегистрироваться
Только зарегистрировавшиеся пользователи могут оставлять комментарии
Комментирует ASVERUS 08.01.2011 12:16:44 при попытке запуска - 9 ошибок
Комментирует SHPION 10.01.2011 8:26:18 Шикарный пример
Я ради него зарегистрировался.
Этот пример взорвал мне мозг. Самостоятельно добится его работоспособности позволил только многолетний опыт С++.
"В результате применения модификатора protected..." - это я так понимаю вместо хэдшота?
|
|