public int    gamma;    //    открытый    доступ

// Методы,    которым    доступны члены alpha и beta данного    класса.

// Член класса может иметь доступ к закрытому члену этого же класса.

public void SetAlpha(int а) { alpha = а;

public int GetAlphaO { return alpha;

}

public void-SetBeta(int a) { beta = a;

}

public int GetBeta() { return beta;

}

}

class AccessDemo { static void Main() {

MyClass ob = new MyClassO;

// Доступ к членам alpha и beta данного класса // разрешен только посредством его методов, ob.SetAlpha(-99) ; ob.SetBeta(19) ;

Console.WriteLine("ob.alpha равно " + ob.GetAlpha());

Console.WriteLine("ob.beta равно " + ob.GetBeta());

// Следующие виды доступа к членам alpha и beta // данного класса не разрешаются.

// ob.alpha =10; // Ошибка! alpha - закрытый член!

// ob.beta =9;    // Ошибка! beta - закрытый член!

// Член gamma данного класса доступен непосредственно,

// поскольку он является открытым, ob.gamma = 99;

}

}

Как видите, в классеMyClassчленalphaуказан явно какprivate,членbetaстановитсяprivateпо умолчанию, а членgammaуказан какpublic.Таким образом, членыalphaиbetaнедоступны непосредственно из кода за пределами данного класса, поскольку они являются закрытыми. В частности, ими нельзя пользоваться непосредственно в классеAccessDemo.Они доступны только с помощью таких открытых(public)методов, какSetAlpha () иGetAlpha (). Так, если удалить символы комментария в начале следующей строки кода:

// ob.alpha =10; // Ошибка! alpha - закрытый член!

то приведенная выше программа не будет скомпилирована из-за нарушения правил доступа. Но несмотря на то, что членalphaнедоступен непосредственно за пределами классаMyClass,свободный доступ к нему организуется с помощью методов, определенных в классеMyClass,как наглядно показывают методыSetAlpha() иGetAlpha (). Это же относится и к членуbeta.

Из всего сказанного выше можно сделать следующий важный вывод: закрытый член может свободно использоваться другими членами этого же класса, но недоступен для кода за пределами своего класса.

Организация закрытого и открытого доступа

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

•    Члены, используемые только в классе, должны быть закрытыми.

Перейти на страницу:

Похожие книги