Какие основы наследования и абстракции позволяют реализовать полиморфизм в объектно-ориентированном программировании, помимо интерфейсов?
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
}
}
Таким образом, полиморфизм реализуется через возможность объектов разных классов реагировать по-разному на одинаковые вызовы методов, используя наследование и абстрактные классы.