В Java создание родительских и дочерних классов является важной концепцией объектно-ориентированного программирования. Эта концепция известна как наследование, что позволяет создавать новые классы на основе существующих классов, также известных как родительские или суперклассы.

Дочерний класс, также известный как подкласс, наследует свойства и методы от своего родительского класса, которые можно использовать как есть, переопределять или добавлять новые свойства и методы для создания нового класса. Наследование — полезная функция объектно-ориентированного программирования, поскольку оно позволяет повторно использовать код, уменьшает объем кода, который необходимо написать, и упрощает его сопровождение.

Чтобы создать родительский класс в Java, вы просто создаете обычный класс с его свойствами и методами, как обычно. Рассмотрим пример класса Vehicle:

public class Vehicle {
    private String brand;
    private String color;

    public Vehicle(String brand, String color) {
        this.brand = brand;
        this.color = color;
    }

    public void start() {
        System.out.println("The " + color + " " + brand + " is starting.");
    }

    public void stop() {
        System.out.println("The " + color + " " + brand + " has stopped.");
    }

}

В этом примере класс Vehicle имеет два частных поля, марка и цвет, и два общедоступных метода, start() и stop(). Конструктор принимает два аргумента, бренд и цвет, и инициализирует поля.

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

public class Car extends Vehicle {
    private int doors;

    public Car(String brand, String color, int doors) {
        super(brand, color);
        this.doors = doors;
    }

    public void beep() {
        System.out.println("The " + color + " " + brand + " is beeping.");
    }

}

В этом примере класс Car расширяет класс Vehicle с помощью ключевого слова extends. Класс Car имеет новое приватное поле, двери и новый общедоступный метод beep(). Конструктор принимает три аргумента: бренд, цвет и двери, и инициализирует поля, вызывая конструктор суперкласса с помощью ключевого слова super.

Теперь класс Car наследует свойства и методы класса Vehicle, что означает, что вы можете создать объект Car и вызывать методы start() и stop(), унаследованные от класса Vehicle, а также специфический метод beep(). к классу автомобилей:

public class Main {
    public static void main(String[] args) {
        Car car = new Car("Toyota", "red", 4);
        car.start();
        car.beep();
        car.stop();
    }
}

В этом примере создается объект Car с маркой «Toyota», красным цветом и четырьмя дверями. Вызываются методы start() и stop(), а также метод beep(), специфичный для класса Car. Результат будет:

В Java существует несколько типов наследования, включая одиночное наследование, множественное наследование, иерархическое наследование и многоуровневое наследование. Одиночное наследование является наиболее распространенным типом, когда дочерний класс распространяется на класс с одним родителем. Множественное наследование позволяет дочернему классу наследовать от нескольких родительских классов, что может вызвать конфликты, если один и тот же метод определен в обоих родительских классах. Иерархическое наследование позволяет нескольким дочерним классам наследовать от одного родительского класса, а многоуровневое наследование позволяет дочернему классу наследовать от родительского класса, который сам является дочерним классом другого родительского класса.