Ответ
Полиморфизм — это принцип ООП, позволяющий объектам разных типов обрабатываться через единый интерфейс или базовый класс. Это означает «одна форма, множество реализаций».
Основные виды полиморфизма в Java:
-
Полиморфизм во время выполнения (Runtime / Subtype Polymorphism). Достигается через переопределение методов (override) и наследование. Вызываемый метод определяется типом объекта во время выполнения.
class Animal { void makeSound() { System.out.println("Some sound"); } } class Dog extends Animal { @Override void makeSound() { System.out.println("Woof!"); } // Своя реализация } Animal myAnimal = new Dog(); // Ссылка типа Animal, объект типа Dog myAnimal.makeSound(); // Вывод: "Woof!" (вызывается метод Dog) -
Полиморфизм во время компиляции (Compile-time / Ad-hoc Polymorphism). Достигается через перегрузку методов (overload). Компилятор определяет, какой метод вызвать, на основе сигнатуры (имени и типов параметров).
class Printer { void print(int number) { System.out.println("Printing int: " + number); } void print(String text) { System.out.println("Printing String: " + text); } // Перегрузка } Printer p = new Printer(); p.print(10); // Вызывается print(int) p.print("Hi"); // Вызывается print(String)
Важно: Разные типы данных (например, int, String) сами по себе не являются полиморфизмом. Они становятся частью полиморфного поведения, когда используются в контексте перегрузки методов или единого интерфейса (например, Object).