Sobes.tech
Back to questions
Junior — Middle
59

Какие основы наследования и абстракции позволяют реализовать полиморфизм в объектно-ориентированном программировании, помимо интерфейсов?

Answer from AI

sobes.tech AI

Полиморфизм в объектно-ориентированном программировании достигается не только через интерфейсы, но и с помощью наследования и абстракции:

  • Наследование классов: подкласс наследует поведение и свойства суперкласса и может переопределять методы, обеспечивая разное поведение при вызове одного и того же метода через ссылку на суперкласс.

  • Абстрактные классы: позволяют определить общий интерфейс и частичную реализацию, оставляя детали реализации подклассам. Это обеспечивает возможность работать с объектами разных классов через общий абстрактный тип.

Пример:

abstract class Animal {
    abstract void makeSound();
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Bark");
    }
}

class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("Meow");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog();
        animal.makeSound(); // Bark

        animal = new Cat();
        animal.makeSound(); // Meow
    }
}

Таким образом, полиморфизм реализуется через возможность объектов разных классов реагировать по-разному на одинаковые вызовы методов, используя наследование и абстрактные классы.