stefanik11 61 Opublikowano 17 czerwca 2017 Udostępnij Opublikowano 17 czerwca 2017 Witam, jakoiż jestem początkujący w javie, chciałbym dopytać się o pewne rzeczy, na które nie znalazłem odpowiedzi w internecie. #1 kiedy używać statycznych zmiennych (w jakich przypadkach)? #2 czym jest abstrakcyjność klas? #3 jakie właściwości mają zmienne protected? (protected String zmienna;)? Z góry dziękuję i pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 17 czerwca 2017 Udostępnij Opublikowano 17 czerwca 2017 1. Najlepiej nigdy, no ale są przypadki że się przydaje, np stałe: private/public static final SIZE_OF_GUI = 54; (wyjątkowo, w stałych, używamy wielkich liter i _) a stałymi powinno być wszystko co jest z dupy wpisane w kodzie, tak zwane magic numbers, czy czasem magic strings, czyli jak robisz taska co ma się odpalić za 10 sekund, i robisz bezpośrednio w odpalaniu że ma czekać 200 ticków, to źle, powinna być stała. (a najlepiej to w configu :P) Czasem też przechowuje się tam jakieś dane, ale to rzadko, do np jakiś singletonów, jak czesto pluginie robi się statyczne pole z instancją co by potem szybciej pobierać przez też statyczną metodę getInstance czy coś, ogólnie singletonów też się czesto unika, ale w przypadku pluginu jest to ok, bo bukkit i tak nie zezwala na 2 instancje tego samego pluginu. 2. To obszerny temat i wiąże się też z 3... lepiej wygoogluj coś po angielsku, ale w skrócie: są interfejsy i klasy abstrakcyjne, dana klasa może implementować wiele interfejsów i rozszerzać tylko 1 inną klasę. Datego zazwyczaj staramy używać się interfejsu do opisania jakiejś możliwości, tak jak np jest w bukkcie `CommandSender` każdy może to sobie zaimplementować do dowolnej klasy. Jednak czasem klasy abstrakcyjne przydają się bardziej, bo można w nich przechowywać pola, czy tworzyć metody o innej widoczności niż public, co pomaga lepiej kontrolować przepływ danych. Często używa się też obu... Np interface Job z metodą void giveSalary(Player), porem robisz sobie abstrakcyjną klasę z implementacją giveSalay(Player) która daje graczu tyle kasy ile zwróci metoda protected double calaculateSalary(Player player), i ta metoda będzie abstrakcyjna w tej klasie, czyli podobnie jak z interfejsem, potem klasa rozszerzająca musi ją zaimplementować, a sama klasą z tą metodą musi być abstrakcyjna - tak samo jak interfejs, sama nie definiuje jeszcze żadnego pełnego typu, nie można utworzyć nowej instancji takiej klasy (no bo nie wszystkie metody są zaimplementowane) 3. i właśnie protected sprawia że daną metodę/zmienną można użyć tylko z tego samego package (tak samo jest kiedy nie dasz żadnego modyfikatora) ORAZ z klas rozszerzających daną klasę. A tak to słabo googlujesz, i szukaj po angielsku, więcej znajdziesz. No i szukaj pod javę a nie bukkita stefanik11 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 stefanik11 61 Opublikowano 17 czerwca 2017 Autor Udostępnij Opublikowano 17 czerwca 2017 @GotoFinal, dziękuję za odpowiedź, bardzo mi pomogła. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
stefanik11 61
Witam, jakoiż jestem początkujący w javie, chciałbym dopytać się o pewne rzeczy, na które nie znalazłem odpowiedzi w internecie.
#1 kiedy używać statycznych zmiennych (w jakich przypadkach)?
#2 czym jest abstrakcyjność klas?
#3 jakie właściwości mają zmienne protected? (protected String zmienna;)?
Z góry dziękuję i pozdrawiam.
Odnośnik do komentarza
Udostępnij na innych stronach
2 odpowiedzi na to pytanie
Rekomendowane odpowiedzi