У цьому уроці ми поговоримо про таких важливих членах класу, як конструктори.
Конструктор – це метод класу, призначений для ініціалізації об'єкта при його створенні.
Ініціалізація – це завдання початкових параметрів об'єктів/змінних при їх створенні.
Особливістю конструктора, як методу, є те, що його ім'я збігається з ім'ям класу, в якому він оголошується. При цьому, при оголошенні конструктора, не потрібно вказувати повертається тип, навіть ключове слово 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 <<попередня>> До змісту