Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекция 7. Статические члены класса

Статические члены класса

Статические члены совместно используются разными экземплярами данного класса и поэтому могут считаться глобальными (едиными) для объектов класса. Статические свойства и поля позволяют обращаться к данным, которые не зависят не от каких экземпляров класса, а статические методы – выполнять код, связанный с типом класса…кроме того для использования статических членов нет необходимости нет необходимости создавать экземпляры класса.

class A

{

public static int Count;

public int Number;

}

A myclass = new A();

int myclass = A.Count;

int mynumber = myclass.Number;

 

В UML статические члены обозначаются подчеркиванием.

Статические конструкторы

Для применения статических членов может понадобиться их инициализация. Для статического члена можно указать начальное значение прямо в объявлении, но иногда нужна сложная инициализация или другие операции перед присваиванием значений или выполнением статических методов. Для этого существуют статические конструкторы. У класса могут быть один статический конструктор, который не может принимать никаких параметров. Он вызывается в следующих случаях:

1. При создании экземпляра класса, содержащего данный статический конструктор

2. При обращении к статическому члену класса, содержащему данный статический конструктор

В обоих случаях сначала вызывается статический конструктор, а потом создается экземпляр класса или выполняется обращение к статическому члену. Сколько бы экземпляров не создавалось, его конструктор вызывается только один раз.

Статические классы

Часто бывает использовать классы, содержащие только статические члены, для которых невозможно создавать объекты. Примером такого класса является класс Console. Проще всего в этой ситуации не делать все конструкторы класса приватными, а использовать статические классы. Статический класс может содержать только статические члены и не может содержать конструкторы экземпляров.

Интерфейсы

Интерфейс – коллекция общедоступных (а значит нестатических) методов и свойств, которые сгруппированы для инкапсуляции конкретной функциональности. Интерфейсы в отличие от классов не позволяют создавать экземпляры, не могут содержать код с реализацией их членов, они могут лишь определять их члены. Реализация членов осуществляется в классах, реализующих данный интерфейс.

В приведенном ранее примере класса CupOfCoffee, многие свойства и методы более общего назначения можно сгруппировать в интерфейс с именем IHotDrink. Такой интерфейс можно применять для других объектов, например, объектов класса CupOfTea. Это позволяет однотипно работать со всеми подобными объектами, хотя они могут иметь и собственные свойства. В UML интерфейсы реализуемые для классов изображаются с помощью кружочков. Классы, реализующие интерфейс IHotDrink выносятся в отдельный прямоугольник. Один класс может поддерживать несколько интерфейсов, а несколько классов могут поддерживать один и тот же интерфейс. После интерфейса, например, если имеется код, в котором используется объект с определенным интерфейсом и не используются другие методы и свойства этого объекта, то этот объект можно легко заменить другим, поддерживающим тот же самый интерфейс. Таким образом, с точки зрения интерфейса не будет разницы, объект какого класса будет обрабатываться, нет необходимости определять принадлежность объекта к какому-либо классу.

Освобождаемые объекты (IDisposable)

Объект, поддерживающий этот интерфейс, должен реализовывать метод Dispose. Метод предназначен для освобождения ресурсов, занимаемых объектом, которые могут оставаться занятыми вплоть до вызова деструктора. В языке имеется конструкция специальная для эффективного применения этого метода. Ключевое слово using позволяет инициализировать критические ресурсы объекта в кодовом блоке, по достижении которого автоматически вызывается метод Dispose.

<имя класса><имя переменной> = new <Имя класса>();

Using (<имя переменной>)

{

}

Когда надо использовать:

1. Работа с потоками данных (вывод данных и т.д.)

2. Многопоточная обработка информации с использованием класса Thread()

Наследование классов

Механизм наследования позволяет расширить или создавать конкретные классы от одного более общего класса.

При порождении от базового класса важным становится вопрос о доступности этих членов. Приватные члены базового класса не доступны из дочернего класса, а общедоступные – доступны. хотелось бы иметь такие члены класса, которые доступны из базового, дочернего классов, но не из внешнего класса. Такой уровень доступности называется protected. Помимо уровня защиты членов класса в производном классе можно определить способ наследования. Члены базового класса могут быть виртуальными, это значит что в производном классе может содержаться альтернативная реализация virtual члена. Эта альтернативная реализация не отменяет исходной реализации, но делает ее недоступной извне. При отсутствии альтернативной реализации любой внешний код обращается к коду этого члена в базовом классе.


 

<== предыдущая лекция | следующая лекция ==>
Лекция 6. Свойства и поля объектов | Лекция 8. Виртуальные члены могут быть приватными
Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 326; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.