Пять уроков по Java

Protected


Модификатор доступа protected позволяет обращаться к данным и методам класса лишь самому классу, классам, хранящимся в этой же упаковке, и унаследованным классам, но лишь в том случае, если они находятся в одной упаковке с классом-предком. Обычно такой модификатор применяют для того, чтобы закрыть доступ к данным и методам для тех классов, которые не состоят в "родственных отношениях" с защищаемым классом. Обратите внимание на то, что в Java классы считаются родственными, не только если они унаследованы друг от друга, но и просто хранятся в одной и той же упаковке.

Предположим, что в упаковке Nums имеется некий класс First и что он содержит переменную и метод, объявленные protected:

package Nums;

class First

{

protected int protVar;

protected void protMethod()

{

System.out.println("protMeth called!");

}

}

Если теперь в той же упаковке описать другой класс с именем Second, то он сможет свободно обращаться к методам и данным класса First, не обращая внимания на то, что Second не был унаследован от First:

package Nums;

class Second

{

void protAccessMethod()

{

First ap = new First();

ap.protVar = 345;

ap.protMethod();

}

}

Напомню, что унаследованные классы могут беспрепятственно обращаться к данным и методам, отмеченным модификатором protected, только в том случае, если класс-предок располагается в той же упаковке, что и сами классы-наследники.



Содержание раздела