Funkcje wirtualne w Javie, a statyczność.

0

Witam!
Studiując sobie trochę Javę natknąłem się na zdanie mówiące o tym, że wszystkie metody w niej są domyślnie wirtualne.
Uczony doświadczeniem z c++ poddałem w wątpliwość to stwierdzenie gdyż z tego co pamiętam (a sprawdziłem i nie mylę się), funkcje wirtualne nie mogą być statyczne.
Jak więc możliwe jest stworzenie metody statycznej w Javie?

1

To dość logiczne że wszystkie niestatyczne metody są tam wirtualne. Autor książki widocznie założył że czytelnik ma trochę oleju w głowie i rozumie na czym polega polimorfizm ;]

2

Statyczne nie są wirtualne. Widać to po tym, że np nie ma przeciążania metod statycznych, nie ma dziedziczenia metod statycznych, nie ma metod statycznych abstrakcyjnych, itp itd

0

Dzięki @Wibowit, autor nie wspomina o wyjątkach, wnioskowałem tak dlatego, że użył słowa "wszystkie" stąd wątpliwości.
@Shalom Brak oleju bierze się z małego doświadczenia :P 6 miesięcy z kodem to nie za dużo czasu ;)

0

A czy nie napisał ten autor na przykład że to metody obiektów są wirtualne? :P

0

Jeszcze chyba do tego nie doszedłem :)
Dzięki bardzo za rozwianie wątpliwości.
@Shalom Następnym razem postaram się o mądrzejsze pytania, miałem chwilowy mętlik i chciałem się go szybko pozbyć, to miejsce wydało się być idealne :)

0
Wibowit napisał(a):

Statyczne nie są wirtualne

Tak samo jak prywatne. Tylko protected, package-protected i public są wirtualne.

0
Shalom napisał(a):

To dość logiczne że wszystkie niestatyczne metody są tam wirtualne. Autor książki widocznie założył że czytelnik ma trochę oleju w głowie i rozumie na czym polega polimorfizm ;]

Poddam to stwierdzenie lekkiej krytyce. Zaklada ono (przynajmniej tak ja je rozumiem, prosze o poprawienie mnie jesli sie myle) ze dotyczy tylko funkcji niestatycznych, a ten kto nie ma oleju w glowie moze pomyslec ze rowniez statyczne sa polimorficzne.
A co z innymi jezykami? A co, jesli ktos zna dobrze jakis inny jezyk i ma olej w glowie, i jednak Java okazuje sie tepym ograniczonym jezykiem z wieloma ograniczeniami?
Zapraszam do chociazby pobieznego zapoznania sie z Objective-C. Tam np. sa metody klas, i sa polimorficzne. Jesli ktos ma doswiadczenie z tym jezykiem i zacyzna w Javie to mimo oleju w glowie moze miec oczekiwania inne niz Ty.

0

Obj-C to tylko przyklad, jest wiecej jezykow ktore na to pozwalaja. Niezrozumienie przeslania poprzedniego postu tylko daje lepszy obraz ignorancji.
Do niedawna nie mozna bylo programowac na iOS w niczym innym niz Obj-C / Obj-C++ jelsi sie chce miec pelna kontrole. Byly MonoTouch in RubyMotion in inne, ale kazde ma swoje ograniczenia, predzej czy pozniej w powaznych aplikacjach trzeba i tak pisac w Obj-C. Aktualnie Swift jest w poznych betach - co sadzicie o tym?
Czy raczej macie na mysli ze programowanie na iOS ogolnie jest porazka, bo to Apple, to zlo, itp. itd.? Z biznesowane punktu widzenia to raczej kiepskie argumenty. Ale fakt, nie wiem jak jest w Polsce, moze nie ma zapotrzebowania na iOS; w Niemczech, gdzie zyje, jest wielki popyt i mnostwo firm dziergajacych pod iOS.

0

Obj-C jest w uzyciu od 1983, czyli jest tak stary jak ja... Wiec nie ma co sie spodziewac po nim cudow (po mnie rowniez nie).
To ze piszesz cos takiego w oparciu o 'slabe wrazenie' i przyznajesz, ze nie masz jednak 'wielkiego doswiadczenia' swiadczy, ze jednak naprawde jestes ignorantem.
A co do jezyka - jezyk jak jezyk, da sie zyc i pisac, ma pare fajnych charkterystyk ale plakal nie bede jak Swift go wyprze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1