Ответ
Полиморфизм (многоформенность) в Java — это возможность объектов разных классов обрабатываться через общий интерфейс или родительский класс. Он позволяет писать более гибкий, расширяемый и поддерживаемый код.
Пример полиморфизма:
abstract class Shape {
abstract double area();
}
class Circle extends Shape {
private double radius;
Circle(double r) { this.radius = r; }
@Override
double area() { return Math.PI * radius * radius; }
}
class Rectangle extends Shape {
private double width, height;
Rectangle(double w, double h) { this.width = w; this.height = h; }
@Override
double area() { return width * height; }
}
public class Main {
public static void main(String[] args) {
Shape[] shapes = new Shape[] {
new Circle(5),
new Rectangle(4, 6)
};
for (Shape shape : shapes) {
// Вызовется соответствующая реализация area()
System.out.println("Площадь: " + shape.area());
}
}
}
Преимущества полиморфизма:
- Снижение связанности: Код работает с абстракцией (
Shape), а не с конкретными классами. - Расширяемость: Можно добавить новый класс (например,
Triangle), не изменяя существующий код, который используетShape. - Упрощение кода: Один метод может работать с разными типами объектов.
Типы полиморфизма в Java:
- Полиморфизм во время выполнения (переопределение методов) — как в примере выше.
- Полиморфизм во время компиляции (перегрузка методов) — несколько методов с одним именем, но разными параметрами.