Ami valójában azt jelenti, védett java

Már röviden említettük, hogy az osztályának tagja van megjelölve védett, nyitott a hozzáférést a származtatott osztályok, de ez túl általános a beteg kezelése. Pontosabban áll rendelkezésre

osztályteremben, és a keretében a „natív” csomagot (csomagjaival kapcsolatban lásd 13. fejezet), tagja a védett jel lehet fordított hivatkozással egy olyan objektum, amely az azonos típusú vagy fajta-származékok. Itt egy példa, amely segít megérteni, hogy mi hangzott el.

Úgy véljük, egy osztályt, amely megvalósítja az adatok szerkezetét sort (queue) a modell, és amelynek láncolt lista technikát hozzá (add a következő objektum a sorban), és távolítsa el (az objektum törlése a sorból). sor - egy objektum osztály eladása, amely hivatkozásokat tartalmaz a következő sorban belépés és az aktuális objektumot.

Elad magán következő;

privát Object elem;

nyilvános Cell (Object elem)

nyilvános eladása (Object elem, elad next)

public Object getElement ()

public void setElement (Object elem)

Elad nyilvános getNext ()

public void setNext (Cell következő)

public class SingleLinkedQueue

Elad védett fej // A „fej” queue

Elad védett farok; // A „farok” sorban

public void add (Object tétel)

public Object remove ()

Linkek mutatnak a „fej” és a „farok” a sorból, jelölt védett, így a kiterjesztés az osztály lehetővé teszi, hogy manipulálják a lista elemei közvetlenül, így nem kell kezelni a módszerek hozzá és az eltávolítás, amely kapcsolatban van a származó többletköltségeket

annak szükségességét, hogy néhány további műveleteket és kicsomagolás elemekkel.

Néhány csoport fejlesztők szükséges prioritási sort, amelyben az elemek vannak tárolva a meghatározott kritériumok szerint, és nem csak hozzá, hogy a végén a sorban. Ezért PriorityQueue bejelentett osztálynak, és található egy másik csomagot; osztály örökli SingleListQueue és felülírható módszer add, amely lehetővé teszi, hogy helyezze az új elemet a megfelelő helyen a sorban. Egy megvalósítási mód szerint a módszer hozzá, csoportjába tartozik a PriorityQueue, feltéve, kezelést a fej és a farok Quatnities mezőket, örökölt SingleListQueue osztály - a kód egy származtatott osztály, így hozzáférést a védett tagok engedélyezett. Mindez teljesen normális és kiszámítható.

public void egyesítés (PriorityQueue q)

Elad első = q.head;

Tegyük fel, hogy a kreatív csapat a kutatás tovább ment, - beletelt egy kell egy olyan fúziós osztály sorban singleLinkQueue a PriorityQueue típusú sorban. Ezért a „float” módszer túlterhelt egyesítés, ami röviden bemutatja a következő:

public void egyesítés (singleLinkQueue q)

Elad első = q.head;

Ez a kód nem lehet összeállítani.

Íme az okok, amelyek miatt korlátozás venni. Minden származtatott osztály örökli egy alap osztály szerződést, és kiterjeszti az utolsó egy vagy: egyébként. Tegyük fel, hogy az egyik a származtatott osztályok, valamint végrehajtja saját szerződés bármilyen módon korlátozza a megengedett értékek védőmezők örökölt egy alap osztályt. Ha egy másik pro víz osztály az azonos alap osztály elérheti a rgotested tagja tiltakozik az első, aki gyarapodott volna a lehetőséget, és manipulálni azok tartalmát közvetlenül, semmi „tudja” a korlátozásokat és kockáztatva, hogy megtörjük a szerződés első deriváltja az osztály, és egy ilyen tanfolyam , nem szabad megengedni.

Tagok kijelölt védett és statisztikailag ugyanakkor nyitott a bemélyedés a kiterjesztett osztályban. Ha a mező SingleListQueue osztály vezetője volt szerelve egy módosítót statisztikailag, bármilyen módszerrel (akár statikus, akár nem) az osztály van joga fellebbezni a fejét. Nagyon is lehetséges, mert a származtatott osztály nem tud fellépni a részét a szerződés a szülő osztály, amely utal a statikus tagok és csak elrejteni, de nem írja felül azokat, és így fennáll a szerződésszegés másik osztály teljesen kizárni.

az osztály tagjai jelzett módosító védett, és elérhető bármely kódot a csomagon belül, amelyhez az osztály tartozik. Ha sorok osztályok fentebb kerültek egy csomagban, akkor azokat a kölcsönös hozzáférési jogokat a mezőket, a fej és a farok - és minden védett tagjai más típusú definiált ugyanabban a csomagban. Az osztályok, amelyek ugyanabban a csomagban „bizalom” kapcsolat, és nem sértik egymás szerződések (további információk erről, lásd 13. fejezet). Ha a hozzáférési módosítók ebben a sorrendben: saját, csomag szintű hozzáférés védett, és Publis - majd minden ezt követő emelésekkel való hozzáférés lehetősége az érintett tagjai az osztály.