Наследование – ключевое понятие объектно-ориентированного программирования. Оно позволяет создавать новые классы (дочерние классы или наследники) на основе существующих (родительских классов). Дочерний класс наследует все поля, методы и конструкторы родительского класса, а также может иметь собственные поля и методы.
Пример наследования: классы Person и Student
Рассмотрим пример. Предположим, у нас есть класс Person, содержащий поля height (рост), name (имя) и методы для работы с ними.
Создадим класс Student, наследник класса Person. После имени класса Student используем ключевое слово extends:
class Student extends Person {
// ...
}
Теперь класс Student наследует все поля и методы класса Person. Добавим в класс Student поле course (курс обучения):
class Student extends Person {
int course;
}
Добавление поля course в класс Person было бы нелогично, поскольку это свойство специфично для студентов. Наследование позволяет создавать специализированные классы, добавляя только необходимые поля и методы.
Доступ к полям и методам родительского класса
Для доступа к полям и методам родительского класса Person внутри класса Student используется ключевое слово super:
class Student extends Person {
int course;
void tell() {
System.out.println("Name: " + super.name);
System.out.println("Height: " + super.height);
System.out.println("Course: " + this.course);
}
}
Метод tell() выводит имя, рост студента и его курс. Обращение к name и height осуществляется через super, указывающее на поля родительского класса.
Конструкторы и наследование
Класс Student наследует конструктор по умолчанию из класса Person. Создадим собственный конструктор для Student, используя super() для вызова конструктора родительского класса:
class Student extends Person {
int course;
Student(String name, int height, int course) {
super(name, height);
this.course = course;
}
}
Конструктор Student принимает имя, рост и курс, вызывая конструктор Person для инициализации name и height, затем инициализирует course. Ключевое слово this указывает на переменные текущего класса.
Создание и использование объектов
Создадим объекты класса Student:
Student freshman = new Student("Viktor", 76, 2);
Student anotherStudent = new Student("Another", 180, 4);
System.out.println(freshman.name);
System.out.println(freshman.height);
System.out.println(freshman.course);
freshman.tell();
anotherStudent.tell();
Этот код создает двух студентов, используя созданный конструктор. Вызывается метод tell() для вывода информации о каждом студенте.
Наследование – мощный инструмент объектно-ориентированного программирования, позволяющий создавать иерархию классов и повторно использовать код. Понимание принципов наследования позволяет создавать более структурированный, понятный и эффективный код.