Я просмотрел так много веб-сайтов, которые объясняют спецификаторы доступа в java, такие как java papers, java's access specifiers и многие другие вопросы, связанные с stackoverflow, такие как here.Доступ к защищенной переменной из подкласса снаружи пакета
Все эти ребята объяснили, что к защищенному члену можно получить доступ к любому подклассу (также подклассом из пакета) и к нему могут быть доступны классы уровня пакета.
При экспериментировании с защищенными членами я узнал, что я не могу получить доступ к защищенному члену из внешнего класса подкласса.
Проверьте, пожалуйста, код. Общий класс с защищенными членами:
package com.One;
public class ProVars {
protected int i = 900;
protected void foo()
{
System.out.println("foo");
}
}
Другой общественный класс в другом пакете пытается получить доступ к защищенному члену:
package com.Two;
import com.One.ProVars;
public class AnotherClass extends ProVars {
public static void main(String[] args) {
ProVars p = new ProVars();
System.out.println(p.i);//the field ProVars.i is not visible(Compilation Error)
p.foo();//the method foo() from the type ProVars is not visible
}
}
Любое объяснение ценится.
Спасибо за четкое объяснение. Таким образом, мы могли получить доступ к защищенным членам в подклассе, но не можем получить к ним доступ объектом super class. – chaitanya89
Правильно! Рад, что ты там! – christopher