Полиморфизм времени выполнения в Java означает способность объекта принимать множество форм и вести себя по-разному в зависимости от его фактического типа во время выполнения. Эта концепция достигается за счет переопределения и наследования методов. Вот несколько методов, демонстрирующих полиморфизм времени выполнения в Java:
-
Переопределение метода:
class Animal { public void makeSound() { System.out.println("Animal is making a sound"); } } class Dog extends Animal { @Override public void makeSound() { System.out.println("Dog is barking"); } } public class Main { public static void main(String[] args) { Animal animal = new Dog(); // Upcasting animal.makeSound(); // Dog is barking } }
-
Вызов полиморфного метода:
class Shape { public void draw() { System.out.println("Drawing a shape"); } } class Circle extends Shape { @Override public void draw() { System.out.println("Drawing a circle"); } } class Square extends Shape { @Override public void draw() { System.out.println("Drawing a square"); } } public class Main { public static void main(String[] args) { Shape[] shapes = new Shape[2]; shapes[0] = new Circle(); shapes[1] = new Square(); for (Shape shape : shapes) { shape.draw(); // Polymorphic method invocation } } }
-
Перегрузка метода:
class Calculator { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } public class Main { public static void main(String[] args) { Calculator calculator = new Calculator(); System.out.println(calculator.add(5, 10)); // 15 System.out.println(calculator.add(3.2, 2.8)); // 6.0 } }
-
Абстрактные методы:
abstract class Animal { public abstract void makeSound(); } class Dog extends Animal { @Override public void makeSound() { System.out.println("Dog is barking"); } } public class Main { public static void main(String[] args) { Animal animal = new Dog(); animal.makeSound(); // Dog is barking } }