Конструкторы в Си-шарп. Указатель this
В этом уроке мы поговорим о таких важных членах класса, как конструкторы.
Конструктор – это метод класса, предназначенный для инициализации объекта при его создании. Инициализация – это задание начальных параметров объектов/переменных при их создании.
Особенностью конструктора, как метода, является то, что его имя всегда совпадает с именем класса, в котором он объявляется. При этом, при объявлении конструктора, не нужно указывать возвращаемый тип, даже ключевое слово void. Конструктор следует объявлять как public, иначе объект нельзя будет создать (хотя иногда в этом также есть смысл).
В классе, в котором не объявлен ни один конструктор, существует неявный конструктор по умолчанию, который вызывается при создании объекта с помощью оператора new.
Объявление конструктора имеет следующую структуру:
Например, у нас есть класс Автомобиль. Создавая новый автомобиль, значения пробега и количества топлива в баке есть смысл поставить равными нулю:
Без конструктора нам бы пришлось после создания объекта отдельно присваивать значения его полям, что очень неудобно.
Конструктор также может иметь параметры.
Пример с тем же автомобилем, только теперь при создании объекта мы можем задать любые начальные значения:
Ключевое слово this
В примере выше используется ключевое слово this.
Указатель this - это указатель на объект, для которого был вызван нестатический метод. Ключевое слово this обеспечивает доступ к текущему экземпляру класса. Классический пример использования this, это как раз в конструкторах, при одинаковых именах полей класса и аргументов конструктора. Ключевое слово this это что-то вроде имени объекта, через которое мы имеем доступ к текущему объекту.
Несколько конструкторов
В классе возможно указывать множество конструкторов, главное чтобы они отличались сигнатурами. Сигнатура, в случае конструкторов, - это набор аргументов. Например, нельзя создать два конструктора, которые принимают два аргумента типа int.
Пример использования нескольких конструкторов:
Если в классе определен один или несколько конструкторов с параметрами, мы не сможем создать объект через неявный конструктор по умолчанию:
Домашнее задание
Создайте класс Студент, определите в нем поля: имя, курс, есть ли у него стипендия. Создайте в классе несколько конструкторов, для возможности задания сразу всех указанных параметров или нескольких при создании экземпляров.
PS. Буду очень благодарен, если поделитесь с друзьями этой статьей с помощью кнопок социальных сетей в конце поста.
Конструктор – это метод класса, предназначенный для инициализации объекта при его создании. Инициализация – это задание начальных параметров объектов/переменных при их создании.
Особенностью конструктора, как метода, является то, что его имя всегда совпадает с именем класса, в котором он объявляется. При этом, при объявлении конструктора, не нужно указывать возвращаемый тип, даже ключевое слово void. Конструктор следует объявлять как public, иначе объект нельзя будет создать (хотя иногда в этом также есть смысл).
В классе, в котором не объявлен ни один конструктор, существует неявный конструктор по умолчанию, который вызывается при создании объекта с помощью оператора new.
Объявление конструктора имеет следующую структуру:
public [имя_класса] ([аргументы])
{
// тело конструктора
}
{
// тело конструктора
}
Например, у нас есть класс Автомобиль. Создавая новый автомобиль, значения пробега и количества топлива в баке есть смысл поставить равными нулю:
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(); // создание объекта и вызов конструктора
}
}
{
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); //вызов конструктора с параметрами
}
}
{
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); // создаем автомобиль с указанными параметрами
}
}
{
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(); // ошибка, в классе не определен конструктор без параметров
}
}
{
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(); // ошибка, в классе не определен конструктор без параметров
}
}
Домашнее задание
Создайте класс Студент, определите в нем поля: имя, курс, есть ли у него стипендия. Создайте в классе несколько конструкторов, для возможности задания сразу всех указанных параметров или нескольких при создании экземпляров.
PS. Буду очень благодарен, если поделитесь с друзьями этой статьей с помощью кнопок социальных сетей в конце поста.
Комментариев нет:
Отправить комментарий