Existujú v Jave jasné pravidlá, kedy používať jednotlivé modifikátory prístupu, konkrétne predvolený (package private), public
, protected
a private
, pri vytváraní class
a interface
a pri práci s dedičnosťou?
Oficiálny návod vám môže byť užitočný.
______________________________________________________________ | │ Trieda │ Balík │ Podtrieda │ Podtrieda │ Svet | | │ │ │ │(rovnaký pkg)│(rozdielny pkg)│ | |───────────┼───────┼─────────┼──────────┼──────────┼────────| |public │ + │ + │ + │ + │ + │ | |───────────┼───────┼─────────┼──────────┼──────────┼────────| |chránené │ + │ + │ + │ + │ | |───────────┼───────┼─────────┼──────────┼──────────┼────────| |bez modifikátora│ + │ + │ + │ │ | |───────────┼───────┼─────────┼──────────┼──────────┼────────| |súkromné │ + │ │ │ │ │ | |___________|_______|_________|__________|__________|________| + : prístupné prázdne : neprístupné
Jednoduché pravidlo. Začnite tým, že všetko vyhlásite za súkromné. A potom postupujte smerom k verejnému, ako to budú vyžadovať potreby a dizajn.
Pri odhaľovaní členov sa pýtajte, či odhaľujete voľby reprezentácie alebo voľby abstrakcie. Prvej možnosti sa chcete vyhnúť, pretože zavedie príliš veľa závislostí od skutočnej reprezentácie, a nie od jej pozorovateľného správania.
Vo všeobecnosti sa snažím vyhýbať prepisovaniu implementácií metód prostredníctvom podtried; je príliš jednoduché pokaziť logiku. Deklarovať abstraktné chránené metódy, ak máte v úmysle, aby boli prepisované.
Pri prepisovaní používajte aj anotáciu @Override, aby ste pri refaktorovaní veci nerozbili.