Установка значений при создании объекта
Сейчас значения объекту присваиваются после его создания. Например:
// Создание объекта
// Установка значений
Удобнее устанавливать значения при создании объекта. Это достигается с помощью конструкторов.
Конструкторы: назначение
Конструкторы — это методы, устанавливающие значения объекта при его создании. Вместо:
// Создание объекта
// Установка значений
используется конструктор для сокращения кода.
Конструктор по умолчанию
В каждом классе есть скрытый конструктор по умолчанию. Он не принимает параметров и ничего не делает. Сделаем его видимым:
public class Transport {
// ...
public Transport() {
// ...
}
}
public class Main {
public Main() {
// ...
}
}
В Main конструктор по умолчанию избыточен и может быть удалён. Модификатор доступа private запретит создание объектов, закрыв доступ к конструктору:
private Transport() { }
Внутри конструктора выполняется любой код. Например, подключение к базе данных или вывод информации на экран:
public Transport() {
System.out.println("Объект создан");
}
Конструкторы с параметрами
Конструктор может принимать параметры для инициализации полей класса:
public Transport(double speed, double weight, String color, int[] coordinates) {
System.out.println("Объект создан");
setSpeed(speed);
setWeight(weight);
setColor(color);
setCoordinates(coordinates);
System.out.println(getDetails());
}
Здесь используются методы set для установки значений вместо прямого присваивания. При создании объекта выведется информация, а затем значения, переданные в конструктор:
Transport bmw = new Transport(200.0, 1500.0, "red", new int[]{10, 20});
Несколько конструкторов
В классе можно создавать несколько конструкторов. Например:
public Transport(double weight, int[] coordinates) {
setWeight(weight);
setCoordinates(coordinates);
System.out.println(getDetails());
}
Этот конструктор принимает только вес и координаты. Java автоматически выбирает нужный конструктор в зависимости от количества и типа переданных параметров:
Transport truck = new Transport(5600, new int[]{100, 0});
Вызывается конструктор с двумя параметрами. Можно создавать любое количество конструкторов, отличающихся количеством или типом параметров.
Инкапсуляция и модификаторы доступа
Для безопасности и инкапсуляции рекомендуется использовать модификатор доступа private для полей класса:
private double speed;
private double weight;
// ...
Доступ к полям осуществляется через методы set и get. Прямой доступ к полям извне класса невозможен.
Ключевое слово this
Вместо нижних подчеркиваний для различения переменных лучше использовать ключевое слово this:
public Transport(double speed, double weight, String color, int[] coordinates) {
this.speed = speed;
this.weight = weight;
this.color = color;
this.coordinates = coordinates;
System.out.println(getDetails());
}
this указывает на поля класса, а не на параметры конструктора. Это улучшает читаемость кода. Аналогично this используется для вызова методов внутри класса.
В этом уроке изучено использование конструкторов для установки значений при создании объектов в Java. Конструкторы повышают эффективность и безопасность кода, упрощая его структуру и поддерживая принципы инкапсуляции.