Модификатори
Забелязваме, че в декларацията на конструктора, може да се добавят модификатори – . За модификаторите, които познаваме и които не са модификатори за достъп, т.е. const и static, трябва да знаем, че само const не е позволен за употреба при декларирането на конструктори. По-късно в тази глава, в секцията "Статични конструктори" ще научим повече подробности за конструктори декларирани с модификатор static.
Видимост на конструкторите
По подобие на полетата и методите на класа, конструкторите, могат да бъдат декларирани с нива на видимост public, protected, internal, protected internal и private. Нивата на достъп protected и protected internal ще бъдат обяснени в главата "Принципи на обектно-ориентираното програмиране". Останалите нива на достъп имат същото значение и поведение като при полетата и методите.
Инициализация на полета в конструктора
Както обяснихме по-рано, при създаването на нов обект и извикването на конструктор, се заделя памет за нестатичните полетата на обекта от дадения клас и те се инициализират със стойностите по подразбиране за техния тип (вж. секция "Извикване на конструктор").
Освен това, чрез конструкторите най-често инициализираме полетата на класа, със стойности зададени от нас, а не с подразбиращите се за типа.
Например, в примерите, които разглеждахме до момента, винаги полето name на обекта от тип Dog, го инициализирахме по време на неговата декларация:
Вместо да правим това по време на декларацията на полето, по-добър стил на програмиране е да му дадем стойност в конструктора:
public class Dog
{
private string name;
public Dog()
{
this.name = "Sharo";
}
// ... The rest of the class body ...
}
|
В някои книги се препоръчва, въпреки че инициализираме полетата в конструктора, изрично да присвояваме подразбиращите се за типа им стойности по време на инициализация, с цел да се подобри четимостта на кода, но това е въпрос на личен избор:
public class Dog
{
private string name = null;
public Dog()
{
this.name = "Sharo";
}
// ... The rest of the class body ...
}
|
Сподели с приятели: |