Java Конструкторы: Установка значений при создании объекта

Установка значений при создании объекта

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

// Создание объекта
// Установка значений

Удобнее устанавливать значения при создании объекта. Это достигается с помощью конструкторов.

Конструкторы: назначение

Конструкторы — это методы, устанавливающие значения объекта при его создании. Вместо:

// Создание объекта
// Установка значений

используется конструктор для сокращения кода.

Конструктор по умолчанию

В каждом классе есть скрытый конструктор по умолчанию. Он не принимает параметров и ничего не делает. Сделаем его видимым:

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. Конструкторы повышают эффективность и безопасность кода, упрощая его структуру и поддерживая принципы инкапсуляции.

Что будем искать? Например,программа