Что такое подклассы в Java?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Подклассы в Java
Подклассы (subclasses) — это классы, которые наследуют функциональность от другого класса (суперкласса или родительского класса). Подклассы расширяют или переопределяют поведение родительского класса, обеспечивая специализацию и переиспользование кода.
Наследование в Java
Наследование — это механизм объектно-ориентированного программирования, позволяющий создавать иерархии классов. Подкласс наследует все переменные и методы родительского класса и может добавлять свои собственные члены или переопределять существующие.
Java поддерживает одиночное наследование — класс может наследовать только от одного прямого суперкласса (за исключением класса Object, от которого наследуют все классы).
Синтаксис создания подклассов
// Родительский класс
public class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " eating...");
}
public void sleep() {
System.out.println(name + " sleeping...");
}
}
// Подкласс
public class Dog extends Animal {
public Dog(String name) {
super(name); // Вызов конструктора родителя
}
@Override
public void eat() {
System.out.println(name + " eating meat from bowl");
}
public void bark() {
System.out.println(name + " is barking: Woof! Woof!");
}
}
Ключевые концепции
Переопределение методов (Method Overriding)
Подкласс может изменить поведение методов родительского класса:
public class Vehicle {
public void start() {
System.out.println("Vehicle is starting");
}
}
public class Car extends Vehicle {
@Override
public void start() {
System.out.println("Car engine is starting with ignition key");
}
}
Ключевое слово super
Позволяет обращаться к методам и конструкторам родительского класса:
public class Employee {
protected String name;
protected double salary;
public Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
}
public class Manager extends Employee {
private int teamSize;
public Manager(String name, double salary, int teamSize) {
super(name, salary);
this.teamSize = teamSize;
}
}
Полиморфизм с подклассами
Animal animal = new Dog("Rex");
animal.eat();
List<Animal> animals = new ArrayList<>();
animals.add(new Dog("Rex"));
animals.add(new Cat("Whiskers"));
for (Animal a : animals) {
a.eat();
}
Преимущества подклассов
- Переиспользование кода — наследование функциональности родителя
- Специализация — адаптация поведения под конкретные нужды
- Полиморфизм — возможность работать с объектами через ссылку на суперкласс
- Расширяемость — легко добавлять новые подклассы без изменения существующего кода