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

Beskyttet adgangsmodifikator i Java

Websiden @MadProgrammer linket giver en anstændig forklaring:

"Den beskyttede modifikator specificerer, at medlemmet kun kan tilgås i sin egen pakke (som med pakke-privat) og desuden af ​​en underklasse af sin klasse i en anden pakke."

Dette betyder, at det beskyttede medlem skal tilgås direkte gennem enten den klasse, det er defineret i, eller en underklasse af den pågældende klasse, mens det også er inden for den relevante pakke. Det betyder ikke nødvendigvis, at du kan få adgang til det beskyttede medlem gennem en forekomst af nævnte klasse, der er oprettet inden for en underklasse af nævnte klasse. Fokus er på de involverede pakker.

Her er dine eksempler:

package first; // Current package

First fst = new First(); // from package first and does not extend anything
fst.pro();

Forsøger du at få adgang til det pågældende medlem fra hvilken pakke? først

Er (under)klassen, som indeholder nævnte medlem, eller dens overordnede klasse, som den arver medlemmet fra, defineret i den samme pakke? Ja, First er defineret i package first , så protected medlem er tilgængeligt fra First i package first .

package second; // Current package

First fst = new First(); // from package first and does not extend anything
fst.pro();

Forsøger du at få adgang til det pågældende medlem fra hvilken pakke? sekund

Er (under)klassen, som indeholder nævnte medlem, eller dens overordnede klasse, som den arver medlemmet fra, defineret i den samme pakke? Nej, First er defineret i package first , så protected gør medlemmet utilgængeligt fra First i package second .

package second; // Current package

Second sec = new Second(); // from package second and extends First from package first
sec.pro();

Forsøger du at få adgang til det pågældende medlem fra hvilken pakke? sekund

Er (under)klassen, som indeholder nævnte medlem, eller dens overordnede klasse, som den arver medlemmet fra, defineret i den samme pakke? Ja, Second , som er defineret i package second , arver medlemmet fra First , så protected medlem er tilgængeligt fra Second i package second .

Flere eksempler for klarhed:

package first; // Current package

Second sec = new Second(); // from package second and extends First from package first
sec.pro();

Forsøger du at få adgang til det pågældende medlem fra hvilken pakke? først

Er (under)klassen, som indeholder nævnte medlem, eller dens overordnede klasse, som den arver medlemmet fra, defineret i den samme pakke? Ja, Second arver medlemmet fra First , som er defineret i package first , så protected medlem er tilgængeligt fra Second i package first .

package first; // Current package

Third third = new Third(); // from package third and extends Second from package second,
                           // which extends First from package first
third.pro();

Forsøger du at få adgang til det pågældende medlem fra hvilken pakke? først

Er (under)klassen, som indeholder nævnte medlem, eller dens overordnede klasse, som den arver medlemmet fra, defineret i den samme pakke? Ja, Third arver medlemmet fra Second , som arver det fra First hvor medlemmet er defineret (package first ), så protected medlem er tilgængeligt fra Third i package first .


Java tag