Полиморфизм в Java
- Что такое полиморфим
- Пример из жизни
- Пример на языке программирования Java
Содержание
Полиморфизм в Java
Полиморфизм — это концепция объектно-ориентированного программирования (ООП), которая позволяет рассматривать объекты разных классов как объекты общего класса. В Java полиморфизм означает, что метод или оператор может иметь несколько реализаций в зависимости от типа объекта, с которым выполняется операция.
В Java есть два типа полиморфизма:
- Перегрузка метода: это происходит, когда в классе существует несколько методов с одинаковым именем, но разными параметрами. Правильный вызываемый метод определяется во время компиляции на основе аргументов, переданных методу.
- Переопределение метода: это происходит, когда подкласс предоставляет новую реализацию метода, который уже определен в его суперклассе. Правильный вызываемый метод определяется во время выполнения в зависимости от типа объекта, на который делается ссылка.
В Java полиморфизм достигается за счет наследования и использования типов интерфейса. Полиморфизм позволяет рассматривать объекты как объекты их базового класса, что позволяет писать общий код, делая его более гибким и пригодным для повторного использования. Это позволяет создавать более многоразовый и удобный в сопровождении код, а также повышает читаемость кода.
Представьте, что у вас есть класс «Животное» и два подкласса «Кошка» и «Собака». С помощью полиморфизма вы можете написать один фрагмент кода, который работает с любым объектом типа «Животное», даже если этот объект на самом деле является «Кошкой» или «Собакой». Это означает, что код не является специфичным для какого-либо одного типа объекта и может использоваться с любым объектом того же класса или подкласса.
Например, рассмотрим следующий код:
public class Animal {
public void makeSound() {
System.out.println("Animal sound");
}
}
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
Animal dog = new Dog();
Animal cat = new Cat();
animal.makeSound(); // Animal sound
dog.makeSound(); // Bark
cat.makeSound(); // Meow
}
}
В этом примере у Animal
класса есть метод makeSound
, который выводит на экран текстовое отображение звука, который воспроизводит какое-то из животных. Классы Dog
и Cat
расширяют Animal
и переопределяют makeSound
метод, обеспечивая собственную реализацию. Когда создается экземпляр Dog
или Cat
и для него makeSound
вызывается метод, выполняется реализация метода, соответствующая типу объекта. Это полиморфизм в действии.
Возможность обращаться с объектами разных классов как с объектами общего класса обеспечивает большую гибкость при написании кода и упрощает написание универсальных алгоритмов, которые могут работать с объектами разных типов.