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

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

Подведем итоги


Понятие о классах и их взаимоотношений с объектами — основа идеи объектного программирования. Объектно-ориентированные функции С# — наследие C++, дополненное и улучшенное функциями .NET Framework. Разработчиков серьезно беспокоит управление ресурсами в управляемых системах вроде CLR. CLR стремится освободить программистов от нудной работы по подсчету ссылок с помощью сбора мусора на основе детерминированного завершения. Работа с наследованием в С# также отличается от таковой в C++. Хотя поддерживается лишь одиночное наследование, разработчики все же могут задействовать преимущества множественного наследования, реализуя набор интерфейсов.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: