Как унаследовать перегрузки конструкторов суперкласса?

В Java, при наследовании классов, подкласс может наследовать как конструкторы суперкласса, так и перегрузки конструкторов. При этом, при создании экземпляра подкласса, вызывается конструктор суперкласса для инициализации его состояния, а также перегрузки конструкторов подкласса для его собственной инициализации.

Для унаследования перегрузок конструкторов суперкласса в подклассе, необходимо включить в подкласс соответствующие конструкторы, которые необходимо унаследовать. Например, предположим, что у нас есть класс "Vehicle" с несколькими перегрузками конструкторов:

public class Vehicle {
    private String brand;
    private String model;
    
    public Vehicle() {
        // конструктор по умолчанию
    }
    
    public Vehicle(String brand) {
        this.brand = brand;
    }
    
    public Vehicle(String brand, String model) {
        this.brand = brand;
        this.model = model;
    }
}

Теперь предположим, что у нас есть подкласс "Car", который наследует класс "Vehicle". Чтобы унаследовать перегрузки конструкторов "Vehicle" в "Car", нужно включить эти перегрузки в определение подкласса:

public class Car extends Vehicle {
    
    public Car() {
        super(); // вызов конструктора по умолчанию класса Vehicle
    }
    
    public Car(String brand) {
        super(brand); // вызов конструктора с одним параметром класса Vehicle
    }
    
    public Car(String brand, String model) {
        super(brand, model); // вызов конструктора с двумя параметрами класса Vehicle
    }
}

Таким образом, при создании экземпляров класса "Car", можно использовать как конструкторы класса "Car", так и унаследованные перегрузки конструкторов класса "Vehicle". Например:

Car car1 = new Car(); // создание экземпляра класса Car с вызовом конструктора по умолчанию
Car car2 = new Car("Toyota"); // создание экземпляра класса Car с вызовом конструктора с одним параметром
Car car3 = new Car("Toyota", "Camry"); // создание экземпляра класса Car с вызовом конструктора с двумя параметрами

В этом примере, при создании экземпляров класса "Car", вызываются соответствующие конструкторы класса "Vehicle", которые были унаследованы. Это позволяет удобно инициализировать состояние объекта как в подклассе, так и в суперклассе.