Можно ли писать виртуальные методы в Java, как в C ++?
Или есть ли подходящий подход Java, который вы можете реализовать, который производит подобное поведение? Могу я привести несколько примеров?
java
virtual
virtual-functions
Йонатан
источник
источник
Можете ли вы написать виртуальные функции на Java?
Да. Фактически все методы экземпляра в Java являются виртуальными по умолчанию. Только определенные методы не являются виртуальными:
Вот некоторые примеры:
«Нормальные» виртуальные функции
Следующий пример взят из старой версии страницы википедии, упомянутой в другом ответе.
Вывод:
Пример с виртуальными функциями с интерфейсами
Все методы интерфейса Java являются виртуальными. Они должны быть виртуальными, потому что они полагаются на реализующие классы для обеспечения реализации методов. Код для выполнения будет выбран только во время выполнения.
Например:
Пример с виртуальными функциями с абстрактными классами.
Подобно интерфейсам Абстрактные классы должны содержать виртуальные методы, потому что они полагаются на реализацию расширяющихся классов. Например:
источник
Все функции в Java являются виртуальными по умолчанию.
Вы должны изо всех сил писать не виртуальные функции, добавив ключевое слово «final».
Это противоположность C ++ / C # по умолчанию. Функции класса не являются виртуальными по умолчанию; вы делаете их так, добавляя «виртуальный» модификатор.
источник
Все не частные методы экземпляров по умолчанию являются виртуальными в Java.
В C ++ частные методы могут быть виртуальными. Это может быть использовано для идиомы не-виртуального интерфейса (NVI). В Java вам нужно сделать защищенные переопределяемые методы NVI.
Из спецификации языка Java, версия 3:
источник
Да, вы можете писать виртуальные «функции» в Java.
источник
В Java все общедоступные (не частные) переменные и функции являются виртуальными по умолчанию. Более того, переменные и функции, использующие ключевое слово final , не являются виртуальными .
источник