@Override, a metody abstrakcyjne

@Override, a metody abstrakcyjne
matek3005
  • Rejestracja:około 15 lat
  • Ostatnio:prawie 5 lat
  • Postów:358
0

Czy stosowanie adnotacji przy nadpisywaniu metody abstrakcyjnej ma sens? Z tego co udało mi się dowiedzieć o @Override nie wpływa ona na kod wynikowy, a jedynie pomaga uniknąć pewnych błędów w fazie pisania programu (przykładowo literówka przy nadpisywaniu metody) czyli stosowanie jej w przypadku definiowania metody oznaczonej klauzulą abstract staje się zbędne bo java nawet przy popełnieniu literówki poinformuje mnie, że metoda abstrakcyjna nie jest zdefiniowana ?
Czy @Override posiada jeszcze jakieś inne zastosowania? Czy są na przykład jakieś sytuacje gdzie jest ona niezbędna?

pozdrawiam.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

Nigdy nie jest niezbędne. Normalne edytory (Eclipse na przykład) potrafią automatycznie dopisywać @Override tam gdzie to potrzebne. Pozwala ci to uniknąć błędów, a jednocześnie od razu widać w kodzie że metoda jest nadpisaną metodą z nadklasy a nie nową metodą.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
bogdans
Mój Eclipse (Helios 3.6.2) nie dopisuje żadnej adnotacji. Na lewym marginesie, obok sygnatury metody, wyświetlany jest mały trójkąt skierowany w górę. Po najechaniu kursorem pojawia się dymek a w nim tekst "overrride "("implements" )+pełna nazwa klasy(interfejsu) i metody.
Shalom
@bogdans Wejdź sobie w "window->preferences->java->editor->save actions" i tam możesz ustawić sobie m.in. autoformatowanie kodu przy zapisie, a także dopisywanie adnotacji właśnie :)
bogdans
@shalom, ja się nie skarżę, mi ta adnotacja jest niepotrzebna, wspomniany trójkącik (a raczej jego brak) zupełnie mi wystarcza.
Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
0

Czasem wydaje się, że przydałaby się jeszcze adnotacja @overload dla metod przeciążonych bo to też bywa istotnym źródłem błędów. Szczególnie w przypadku przesłaniania metod przeciążonych.


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?
0

W niektórych językach overload i override funkcjonują jako modifiers a nie annotations i brak problemów ze zgadywaniem co autor chciał.

0

@bogdans - Tobie może jest zbędna, Twoim kolegom możliwe że nie. Jak na dobrego obywatela przystało, w projektach, w których nie jesteś jedynym programistą (a nawet jak teraz jesteś to za tydzień możesz już nie być), higieniczne jest stosowanie zaleceń, a używanie @Override takowym jest. Ja osobiscie komentuje w review każdy brakujący @Override jeśli zauważę, i albo sam dodaję, albo daje rejecta jeśli błąd jest nagminny, żeby autor commita wiedział, jak powinno być ;d

bogdans
Zgoda. Czy mućka == _mućka?
0

Nie jestem pewien, jak próbuję użyć nicka 'mućka' to dostaję info, że takie konto już istnieje. Możliwe że kiedyś je zarejestrowałem, ale nigdy się nie loguję; możliwe jednak, że to ktoś inny. A dlaczego, co za różnica?

0

Chyba jednak _mućka != mućka, bo nie działa przypominanie hasła na żaden email który mam. Jeden pewnik - ja się nigdy nie loguję.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.