Ответ
Наследование — это механизм объектно-ориентированного программирования, который позволяет одному классу (дочернему, производному) наследовать структуру (поля) и поведение (методы) другого класса (родительского, базового). Это реализует отношение «является» (is-a) и способствует повторному использованию кода и созданию иерархий.
Простой пример:
// Базовый (родительский) класс
class Vehicle {
protected String brand;
public Vehicle(String brand) {
this.brand = brand;
}
public void honk() {
System.out.println("Beep beep!");
}
}
// Дочерний класс, наследует Vehicle
class Car extends Vehicle {
private int numberOfDoors;
public Car(String brand, int doors) {
super(brand); // Вызов конструктора родительского класса
this.numberOfDoors = doors;
}
public void displayInfo() {
System.out.println("This is a " + brand + " car with " + numberOfDoors + " doors.");
honk(); // Можно использовать унаследованный метод
}
}
// Использование
public class Main {
public static void main(String[] args) {
Car myCar = new Car("Toyota", 4);
myCar.displayInfo(); // Вывод: This is a Toyota car with 4 doors. Beep beep!
myCar.honk(); // Метод доступен, так как унаследован
}
}
Основные концепции, связанные с наследованием:
- Переопределение методов (Override): Дочерний класс может предоставить свою собственную реализацию метода, уже существующего в родительском классе.
class ElectricCar extends Car { @Override public void honk() { System.out.println("Silent electric beep!"); // Своя реализация } } - Абстрактные классы и методы: Родительский класс может объявить метод без реализации (
abstract), обязывая дочерние классы его реализовать. - Полиморфизм: Объект дочернего класса может рассматриваться как объект родительского класса. Это позволяет работать с разными типами через общий интерфейс.
Vehicle myVehicle = new Car("Ford", 2); // Полиморфизм myVehicle.honk(); // Вызовется переопределенный метод, если он есть - Инкапсуляция и доступ: Модификаторы доступа (
private,protected,public) контролируют, какие члены родительского класса видны в дочернем.
Цель наследования: Создавать логические иерархии, избегать дублирования кода и строить расширяемую архитектуру приложения.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶