Модификатор доступа protected
Особенности класса могут быть ограничены до некоторой степени с помощью защищенного модификатора доступа protected. В отличие от модификатора доступа public, модификатор доступа protected позволяет непосредственный доступ подклассам, данному классу и подклассам в различных пакетах. Модификаторы доступа protected используются, когда мы хотим ограничить доступ к некоторым особенностям класса.
В вышеупомянутой программе, сделайте следующие изменения.
В пакете asia измените public доступ к методу getCapital() на protected следующим образом:
public String get Capital () to protected String getCapital()
При компилировании программы 8 (b) будет отображена следующая ошибка:
America.Java:10: No method matching getCapital() found in class asia.China
System.out.println( Capital of China is + chn.getCapital() );
1 error
Так как класс America не является подклассом China, то метод getCapital () не доступен классу America.
Теперь измените класс America следующим образом:
Пример 9:
package america;
import asia.China;
class USA extends China
{
public USA()
{
System, out.println ( Capital of China is + getCapital());
}
public static void main(String args[])
{
new USA();
}
}
Скомпилируйте и выполните программу. Мы получим следующий вывод:
Capital of China is Beijing (Столицей Китая является Пекин)
Мы будем теперь знать, как класс в том же самом пакете может обращаться к защищенному методу.
Создайте файл
korea.java со следующим кодом:
Пример 10:
package asia;
class China
{
int states;
boolean inAsia;
String capital;
public China()
{
states = 26;
inAsia = true;
capital = new String( Beijing );
}
protected String getCapital()
{
return capital;
}
}
public class korea
{
public static void main(String args [])
{
China a = new China(); System.out.println( Capital of China is +a.getCapital());
}
}
Сохраните и скомпилируйте файл. При выполнении файла результат вывода будет тот же самый
Capital of China is Beijing
Модификатор доступа protected не позволяет никакому классу обращаться к защищенным членам класса. Переменная, метод, внутренний класс и его методы могут быть защищены. Защита класса возможна если
Оба класса находятся в одном и том же пакете
Оба класса находятся в различных пакетах, но класс, к которому нужно обратиться, является подклассом главного класса.