У цьому уроці ми поговоримо про таких важливих членах класу, як конструктори.
Конструктор – це метод класу, призначений для ініціалізації об'єкта при його створенні.
Ініціалізація – це завдання початкових параметрів об'єктів/змінних при їх створенні.
Особливістю конструктора, як методу, є те, що його ім'я збігається з ім'ям класу, в якому він оголошується. При цьому, при оголошенні конструктора, не потрібно вказувати повертається тип, навіть ключове слово void. Конструктор слід оголошувати як public, інакше об'єкт можна буде створити (хоча іноді в цьому також є сенс). У класі, в якому не оголошено ні один конструктор, існує неявний конструктор за замовчуванням, який викликається при створенні об'єкта з допомогою оператора new.

Оголошення конструктора має наступну структуру:

public [iм'я_класа] ([аргументи])
{
// тіло конструктора
}

Наприклад, у нас є клас Автомобіль. Створюючи новий автомобіль, значення пробігу та кількості палива в баку є сенс поставити рівними нулю:

class Car
{
private double mileage;
private double fuel;

public Car() //оголошення конструктора
{
mileage = 0;
fuel = 0;
}
}
class Program
{
static void Main(string[] args)
{
Car newCar = new Car(); // створення об'єкта і виклик конструктора 
} 
}

Без конструктора нам би довелося після створення об'єкта окремо присвоювати значення полів, що дуже незручно. Конструктор також може мати параметри.

Приклад з тим же автомобілем, тільки тепер при створенні об'єкта ми можемо задати будь-які початкові значення:

class Car
{
private double mileage;
private double fuel;

public Car(double mileage, double fuel)
{
this.mileage = mileage;
this.fuel = fuel;
}
}
class Program
{
static void Main(string[] args)
{
Car newCar = new Car(100, 50); //виклик конструктора з параметрами 
} 

Ключове слово this

У наведеному вище прикладі використовується ключове слово this. Вказівник this - це покажчик на об'єкт, для якого був викликаний нестатический метод. Ключове слово this забезпечує доступ до поточного екземпляру класу. Класичний приклад використання this, це як раз в конструкторах, при однакових іменах полів класу і аргументів конструктора. Ключове слово this це щось на зразок імені об'єкта, через яке ми маємо доступ до поточного об'єкту.

Кілька конструкторів

У класі можливо вказувати безліч конструкторів, головне щоб вони відрізнялися сигнатурами. Сигнатура, у разі конструкторів, - це набір аргументів. Наприклад, можна створити два конструктора, які приймають два аргументи типу int.

Приклад використання декількох конструкторів:

class Car
{
private double mileage;
private double fuel;

public Car()
{
mileage = 0;
fuel = 0;
}

public Car(double mileage, double fuel)
{
this.mileage = mileage;
this.fuel = fuel;
}
}
class Program
{ 
static void Main(string[] args)
{
Car newCar = new Car(); // створюємо автомобіль з параметрами за замовчуванням, 0 та 0 
Car newCar2 = new Car(100, 50); // створюємо автомобіль з вказаними параметрами 
} 
}

Якщо в класі визначено один або кілька конструкторів з параметрами, ми не зможемо створити об'єкт через неявний конструктор за замовчуванням:

class Car
{
private double mileage;
private double fuel;

public Car(double mileage, double fuel)
{
this.mileage = mileage;
this.fuel = fuel;
}
}
class Program
{ 
static void Main(string[] args)
{
Car newCar = new Car(100, 50); 
Car newCar2 = new Car(); // помилка, в класі не визначений конструктор без параметрів 
} 
}

Автор Swytos                                              <<попередня>>                                                 До змісту


2016-05-29 • Просмотров [ 165 ]