25.07.2017 Views

Intro-CSharp-Book-v2015

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

536 Въведение в програмирането със C#<br />

}<br />

Трябва да знаем, че когато задаваме модификатор за достъп за дадено<br />

поле, той най-често трябва да бъде private, тъй като така даваме възможно<br />

най-висока защита на достъпа до стойността на полето. Съответно,<br />

достъпът и модификацията на тази стойност от други класове (ако са<br />

необходими) ще се осъществяват единствено чрез свойства или методи.<br />

Повече за тази техника ще научим в секцията "Капсулация" на главата<br />

"Принципи на обектно-ориентираното програмиране".<br />

Как се определя нивото на достъп на елементите на<br />

класа?<br />

Преди да приключим със секцията за видимостта на елементите на един<br />

клас, нека направим един експеримент. Нека в класа Dog полето name и<br />

метода Bark() са декларирани с модификатор за достъп private. Нека също<br />

така, декларираме метод Main(), със следното съдържание:<br />

public class Dog<br />

{<br />

private string name = "Sharo";<br />

// ...<br />

private void Bark()<br />

{<br />

Console.WriteLine("wow-wow");<br />

}<br />

// ...<br />

}<br />

public static void Main()<br />

{<br />

Dog myDog = new Dog();<br />

Console.WriteLine("My dog's name is " + myDog.name);<br />

myDog.Bark();<br />

}<br />

Въпросът, който стои пред нас е, ще се компилира ли класът Dog, при<br />

положение, че сме декларирали елементите на класа с модификатор за<br />

достъп private, а в същото време ги извикваме с точкова нотация,<br />

приложена към променливата myDog, в метода Main()?<br />

Стартираме компилацията и тя минава успешно. Съответно, резултатът от<br />

изпълнението на метода Main(), който декларирахме в класа Dog, ще бъде<br />

следният:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!