Полиморфизм в Java

Cover Image for Полиморфизм в 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вызывается метод, выполняется реализация метода, соответствующая типу объекта. Это полиморфизм в действии.

Возможность обращаться с объектами разных классов как с объектами общего класса обеспечивает большую гибкость при написании кода и упрощает написание универсальных алгоритмов, которые могут работать с объектами разных типов.

Возникли вопросы по статье, не работает код, хотелось бы больше информации - свяжитесь с нами и мы поможем