Да, Java поддерживает виртуальные функции. На самом деле все методы экземпляра в Java являются виртуальными по умолчанию, что означает, что вызовы методов разрешаются во время выполнения на основе фактического типа объекта, а не типа ссылки.
Когда ты вызываешь метод у объекта в Java, рантайм определяет, какую реализацию использовать, на основе фактического класса объекта, а не объявленного типа переменной. Это фундаментальный принцип полиморфизма, и он автоматически работает для всех методов экземпляра.
Следующие типы методов не обладают поведением виртуальных функций:
class Animal {
public void makeSound() {
System.out.println("Generic sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark");
}
}
Animal animal = new Dog();
animal.makeSound(); // Вывод: "Bark" (разрешение во время выполнения)
То, что Java делает все методы экземпляра виртуальными по умолчанию, обеспечивает настоящий полиморфизм без явных ключевых слов и дополнительных объявлений — наследование и переопределение методов работают просто и предсказуемо.
Все методы экземпляра в Java виртуальны по умолчанию, то есть разрешение метода происходит во время выполнения на основе фактического типа объекта, а не типа ссылки.
Новый — ещё не проверен сообществом
Вы