Чем отличается виртуальное поведение по умолчанию в C++ и Java?

Опубликовано: 15 Сентября, 2022

Давайте обсудим, чем отличается виртуальное поведение методов по умолчанию в C++ и Java. Очень важно помнить, что в методы-члены класса языка C++ по умолчанию не являются виртуальными. Их можно сделать виртуальными, используя виртуальные ключевые слова. Например, Base::show() не является виртуальным в следующей программе, и программа выводит «Base::show() call» .

Пример:

Вывод: ошибка компиляции

Base::show() called

Вывод Объяснение: Добавление виртуального перед определением Base::show() приводит к тому, что программа печатает «Derived::show() call». В Java методы по умолчанию являются виртуальными, и их можно сделать невиртуальными с помощью ключевого слова final. Например, в следующей Java-программе show() по умолчанию является виртуальным, и программа печатает «Derived::show() named ».

Давайте посмотрим, что произойдет , если мы используем ту же концепцию в языке программирования Java на примере, предложенном ниже.

Пример:

Note: Unlike C++ non-virtual behavior, if we add final before the definition of the show() in Base, then the above program fails in the compilation.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.