|
Введение в классы (часть 2)
СОСТАВ КЛАССОВ
Поле. Так называется член-переменная, содержащий некоторое значение. В ООП поля иногда называют данными объекта. К полю можно применять несколько модификаторов в зависимости от того, как вы собираетесь его использовать. В число модификаторов входят static, readonly и const. Ниже мы познакомимся с их назначением и способами применения.
Метод. Это реальный код, воздействующий на данные объекта (или поля). Здесь мы сосредоточимся на определении данных класса. Подробнее о методах расскажем чуть позже.
Свойства. Их иногда называют «разумными» полями (smart fields), поскольку они на самом деле являются методами, которые клиенты класса воспринимают как поля. Это обеспечивает клиентам большую степень абстрагирования за счет того, что им не нужно знать, обращаются ли они к полю напрямую или через вызов метода-аксессора. Подробнее о свойствах будет рассказано в последующих уроках.
Константы. Как можно предположить, исходя из имени, константа —это поле, значение которого изменить нельзя. В главе 4 уже рассматривались константные типы данных. Ниже мы обсудим константы и сравним их с сущностью под названием «неизменяемые поля».
Индексаторы. Если свойства — это «разумные» поля, то индексаторы —это «разумные» массивы, так как они позволяют индексировать объекты методами-аксессорами get и set. С помощью индексатора легко проиндексировать объект для установки или получения значений. Подробнее об индексаторах поговорим в последующих уроках.
События. Событие вызывает исполнение некоторого фрагмента кода. События — неотъемлемая часть программирования для Microsoft Windows. Например, события возникают при движении мыши, щелчке или изменении размеров окна.
МОДИФИКАТОРЫ ДОСТУПА
Теперь, зная, что типы могут быть определены как члены класса С#, познакомимся с модификаторами, используемыми для задания степени доступа, или доступности данного члена для кода, лежащего за пределами его собственного класса. Они называются модификаторами доступа (access modifiers)
Модификаторы доступа в С#
| Модификатор доступа | Описание | | public | Член доступен вне определения класса и иерархии производных классов | | protected | Член невидим за пределами класса, к нему могут обращаться только производные классы | | private | Член недоступен за пределами области видимости определяющего его класса. Поэтому доступа к этим членам нет даже у производных классов | | internal | Член видим только в пределах текущей единицы компиляции. Модификатор доступа internal в плане ограни чения доступа является гибридом public и protected, зависимым от местоположения кода. |
Если вы не хотите оставить модификатор доступа для данного члена по умолчанию (private), задайте для него явно модификатор доступа. Этим С# отличается от C++, где член, для которого явно не указан модификатор доступа, принимает на себя характеристики видимости, определяемые модификатором доступа, заданным для предыдущего члена. Например, в приведенном ниже коде на C++ видимость членов а, Ь и с определена модификатором public, а члены d и е определены как protected:
class AccessCPlusPlus
{
public:
int a;
int b;
int с ;
protected:
int d;
int e;
}
|
А в результате выполнения этого кода на С# член b объявляется как private. Для объявления членов на С# как public необходимо использовать следующую инструкцию:
class AccessCSharp
{
public int a;
public int b;
public int c;
protected int d;
protected int e;
}
|
В результате выполнения следующего кода на С# член b объявляется как private:
public DifAccessInCSharp
{
public int a;
int b;
}
|
Предыдущая стр.   
Оглавление   
Следующая стр.
Средняя оценка:     (5 - 3 голосов) Для оценки необходимо зарегистрироваться
Только зарегистрировавшиеся пользователи могут оставлять комментарии
Комментирует Black 20.02.2010 19:16:45
Комментирует Black 20.02.2010 19:17:07
Комментирует Black 20.02.2010 19:17:19
Комментирует dellby 04.03.2010 17:11:57 А в результате выполнения этого кода на С# член b объявляется как private. Для объявления членов на С# как public необходимо использовать следующую инструкцию:
class AccessCSharp
{
public int a;
public int b;
public int c;
protected int d;
protected int e;
}
ПОЧЕМУ?
Комментирует dellby 04.03.2010 17:13:51 книжка удобная, но стока опечаток которые с нуля пока что понятны, но что будет если я буду читать дальше и перестану видеть ошибки. мой уровень 0.
Комментирует idShura 01.09.2010 21:42:56 Материал, и статьи очень хороши, но над ошибками надо поработать
Комментирует bunnyrock 13.07.2011 12:39:46
dellby , Изходя из материала статьи, можно сделать вывод, что модификатор доступа необходимо объявлять для каждой создаваемой переменной, т.к. по-умолчанию это модификатор имеет значение private. Т.е. если вы не укажете явно модификатор, переменная будет доступна, как если бы вы указали модификатор private.
Комментирует shinigamixas 26.07.2011 14:52:30 я понял.dellby в с++ "public:int a;int b;" к public привязывалось как а так и б.Но в си шарп привяжется токо а.Для б надо опять писать public int b;
|
|