Czy można pisać metody wirtualne w Javie, tak jak w C ++?
A może istnieje odpowiednie podejście do języka Java, które można zaimplementować i które daje podobne zachowanie? Czy mógłbym prosić o kilka przykładów?
java
virtual
virtual-functions
yonatan
źródło
źródło
Czy potrafisz pisać funkcje wirtualne w Javie?
Tak. W rzeczywistości wszystkie metody instancji w Javie są domyślnie wirtualne. Tylko niektóre metody nie są wirtualne:
Oto kilka przykładów:
„Normalne” funkcje wirtualne
Poniższy przykład pochodzi ze starej wersji strony wikipedii, o której mowa w innej odpowiedzi.
Wynik:
Przykład z funkcjami wirtualnymi z interfejsami
Wszystkie metody interfejsu Java są wirtualne. Oni muszą być wirtualny, ponieważ opierają się one na zajęciach wykonawczych w celu zapewnienia implementacje metod. Kod do wykonania zostanie wybrany tylko w czasie wykonywania.
Na przykład:
Przykład z funkcjami wirtualnymi z klasami abstrakcyjnymi.
Podobnie jak w przypadku interfejsów Klasy abstrakcyjne muszą zawierać metody wirtualne, ponieważ opierają się na implementacji klas rozszerzających. Na przykład:
źródło
Wszystkie funkcje w Javie są domyślnie wirtualne.
Aby napisać funkcje niewirtualne, musisz zrobić wszystko, co w twojej mocy, dodając słowo kluczowe „final”.
Jest to przeciwieństwo domyślnego C ++ / C #. Funkcje klas są domyślnie niewirtualne; robisz je tak, dodając modyfikator „wirtualny”.
źródło
Wszystkie non-prywatne metody instancji są wirtualne domyślnie w Javie.
W C ++ metody prywatne mogą być wirtualne. Można to wykorzystać w przypadku idiomu interfejsu niewirtualnego (NVI). W Javie należałoby zabezpieczyć metody zastępowania NVI.
Ze specyfikacji języka Java, wersja 3:
źródło
Tak, w Javie można pisać wirtualne „funkcje”.
źródło
W Javie wszystkie publiczne (nieprywatne) zmienne i funkcje są domyślnie wirtualne . Ponadto zmienne i funkcje używające słowa kluczowego final nie są wirtualne .
źródło