Java >> Java tutorial >  >> Tag >> protected

Brug af superklassebeskyttede endelige metoder til at beholde fælles kode for underklasser

Hvis du er Java-begynder, eller du tænker på den slags ting, så er det nu et godt tidspunkt at læse kapitlet "Klasser og grænseflader" i en bog kaldet "Effektiv Java." Informationen der vil være mere grundig og nuanceret end de svar, du får her.

Her er en måde at tænke på at blande final , protected og static søgeord:

  • OO-purister vil råde dig til at undgå static fordi det bryder OO-paradigmet.
  • Selvfølgelig ved at bruge final nøgleordet forhindrer underklasser i også at tilsidesætte en metode. I denne henseende er resultatet det samme som med static .
  • final bør bruges oftere, og det er en god idé at bruge det sammen med protected . Se punkt 17 i "Effektiv Java".
  • protected og static bruges ikke så ofte sammen. Du ville blande en OO-konstruktion med en konstruktion, der bryder normal OO-adfærd, så kombinationen er mærkelig.

Det forekommer mig rimeligt - selvom du måske vil lave A også abstrakt. Overvej også at bruge sammensætning i stedet - kunne B og C indeholder en A i stedet for at underklassificere det?


For det første bør du ikke bruge extends til dette formål, fordi for meget forlængelse altid er en dårlig idé.

For det andet har du fuldstændig ret i, at du ikke gentager din kode, men at gruppere den efter gentagne dele af koden er ikke et godt valg. Den foretrukne måde er at gruppere ting til mening i den virkelige verden efter abstraktionsniveau.

Sidst men ikke mindst, når du er i tvivl:separat eller ej, forlængelse eller sammensætning, beskyttet endelig eller kun beskyttet, så prøv at skrive enhedstest til denne klasse, og svarene vil komme meget hurtigt.


Java tag