Което всъщност означава защитено Java

Ние вече споменахме и от факта, че член на клас, който е маркиран като защитена, отворена за достъп на извлечения клас, но това е твърде общо лечение на пациентите. По-точно, тя е на разположение в

класна стая и в контекста на "родния" пакет (за информация относно пакети, виж глава 13), член на защитена знак може да бъде обърната чрез позоваване на един обект, който е от същия вид или видове деривати. Ето един пример, който ще ви помогне да се разбере какво е казано.

Ние считаме, че един клас, който реализира структурата на опашката за данни (опашката) от модела и след като свързан списък техники добавят (добавяне на следващия обект на опашката) и премахване (изтриване на обекта от опашката). ред - обект на клас Продава, който съдържа връзки към следващия запис опашка и текущия обект.

Продавай лично следващия;

частен елемент на обекта;

публичен Cell (елемент обект)

обществен Продава (елемент на обекта, Продавай следващия)

обществен обект getElement ()

обществени невалидни setElement (елемент на обекта)

Продавай обществен getNext ()

обществени невалидни setNext (Cell следващия)

обществени клас SingleLinkedQueue

Продавай защитени главата; // Опашката "глава"

Продава защитен опашка; // В "опашка" опашката

обществени невалидни добавка (т Object)

уволняват държавни Object ()

Връзки, сочещи към "главата" и "опашката" на опашката, маркирани като защитена, така че разширяването на класа ви позволява да манипулират елементите на списъка, пряко, което премахва необходимостта да се справят с методите добавите и премахнете, което е свързано с допълнителни разходи, произтичащи от

необходимост от извършване на допълнителни операции за опаковане и разопаковане елементи.

Някои група от разработчици изисква приоритетна опашка, в която елементите се съхраняват в съответствие с определени критерии, а не само добавя към края на опашката. Затова приоритетна опашка обявен клас и се намира в различна опаковка; клас наследява SingleListQueue и е отменено метод добавка, която позволява да се постави нов елемент в точното място в опашката. В едно изпълнение на метода добавя, принадлежи към класа на приоритетна опашка, при условие лечение на главата и опашката Quatnities области, наследен от SingleListQueue клас - кодът е извлечен клас, така че достъп до защитени членовете позволено. Всичко това е съвсем нормално и предвидимо.

обществени невалидни сливане (приоритетна опашка р)

Продава първи = q.head;

Да предположим, че нашият творчески екип в изследването си отиде по-далеч - той я взе средство за постигане на синтез на клас опашка singleLinkQueue с тип приоритетна опашка опашка. Ето защо, на метода "флоат" е претоварена сливане, което би могло да се представи накратко, както следва:

обществени невалидни сливане (singleLinkQueue р)

Продава първи = q.head;

Този код няма да се компилира.

Това са причините, които предизвикват ограничение взети под внимание. Всеки получен клас наследява от договор база клас и се простира последната или иначе. Да приемем, че един от най-извлечения клас, изпълнението на собствената си договор, по никакъв начин ограничава обхвата на допустимите стойности на защитените области, наследени от базов клас. Ако друг професионалист от класа на вода от един и същ базов клас може да получите достъп до rgotested членка не възрази на първо място, той щеше да е спечелил възможността и да манипулира съдържанието им директно, нищо че "знае" за наложени и рискуват да развали договора първата производна на класа ограничения, както и такъв курс , не трябва да се допуска.

Членовете, определени като защитени и Статис в същото време отворени към вдлъбнатината в продължителен клас. Ако главата на поле SingleListQueue клас е оборудван с модификатор Статис, че всеки метод (независимо дали е статичен или не) на класа ще има право да подаде жалба до главата. Това е напълно възможно, защото получени клас не е в състояние да действа от страна на договора на базовия клас, който се отнася до статичните членове и може само да се скрие, но не и да ги замени, и поради това рискът от нарушаване на договора от друг клас е напълно изключена.

членове на класа, посочени защитена модифициращите и достъпни от всеки код вътрешната страна на опаковката, към която принадлежи на класа. Ако опашки класове обсъдени по-горе, се поставят в един пакет, те ще имат взаимни права за достъп до областта на главата и опашката - и всички защитени са членове на други видове, които са определени в една и съща опаковка. Класовете, които принадлежат към една и съща опаковка са "доверие" отношения и не нарушават взаимно договори (за повече информация относно това, виж глава 13). Ако модификатори за достъп, посочени в този ред: частни, достъп пакет ниво, защитени и publis - то тогава всеки последващи увеличения на възможностите за достъп до съответните членове на класа.