Какие механизмы реализации полиморфизма существуют в Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
-
Полиморфизм времени компиляции (статический полиморфизм): Реализуется с помощью перегрузки методов (method overloading). Методы имеют одинаковое имя, но разные сигнатуры (количество, тип или порядок аргументов).
class Calculator { // Перегрузка метода add public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } -
Полиморфизм времени выполнения (динамический полиморфизм): Реализуется с помощью переопределения методов (method overriding). Метод в дочернем классе имеет ту же сигнатуру, что и метод в родительском классе, и предоставляет свою собственную реализацию. Решение о том, какой метод вызвать, принимается во время выполнения в зависимости от фактического типа объекта.
class Animal { public void sound() { System.out.println("Animal makes a sound"); } } class Dog extends Animal { // Переопределение метода sound @Override public void sound() { System.out.println("Dog barks"); } } class Cat extends Animal { // Переопределение метода sound @Override public void sound() { System.out.println("Cat meows"); } } -
Ссылки на суперкласс / интерфейс: Объекты подклассов могут быть присвоены ссылкам суперклассов или интерфейсов, которые они реализуют. Это позволяет обрабатывать объекты разных типов единообразно через общую ссылку. Вызов переопределенного метода через такую ссылку приводит к выполнению версии метода из фактического типа объекта.
Animal myAnimal = new Dog(); // Присваивание объекта Dog ссылке типа Animal myAnimal.sound(); // Вызывается переопределенный метод sound() из класса Dog