Принципы объектно-ориентированного программирования

         

Изолированные классы



Изолированные классы

Если вы хотите быть уверенными, что класс никогда не будет использован как базовый, при определении класса примените модификатор sealed. Единственное ограничение: абстрактный класс не может быть изолированным, так как в силу своей природы абстрактные классы предназначены для использования в качестве базовых. И еще. Хотя изолированные классы предназначены для предотвращения непреднамеренного создания производных классов, определение класса как изолированного позволяет выполнить оптимизацию периода выполнения. В частности, поскольку компилятор гарантирует отсутствие у класса любых производных классов, есть возможность преобразования виртуальных вызовов для изолированного класса в невиртуальные вызовы. Вот пример определения класса как изолированного:

using System;

sealed class MyPoint {



public HyPoint(int x, int y) {

this.x = x; this.у = у; }

private int X; public int x {

get

{

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 для внутренних членов классами Y. В результате применения модификатора protected компилятор выдаст предупреждение, так как защищенные члены видимы производным классам, а, как вам известно, у изолированных производных классов нет.



Содержание раздела