Доступ к закрытым переменным в JAVA (AIDE)
class a{
private int i=100;
a(){
//this.i=5;
}
}
class b extends a {
b( ){
//super.i=10;
a a = new a();
System.out.println(super.i);
}
}
class c {
public static void main(String [] args){
b b = new b();
}}
В вышеупомянутой программе я пытался получить доступ к закрытым переменным с помощью ключевого слова super, которое, как я знаю, невозможно, но удивительно, что на моем мобильном телефоне Android с помощью этого AIDE (Java Ide) я смог получить доступ к этому с помощью super, но не напрямую, как я прокомментировал в код. Я просто хочу знать, что это ошибка с AIDE, или я делаю что-то здесь не так.
1 ответ
Если AIDE создаст у вас впечатление, что вы могли бы использовать super.i
в классе b
и скомпилируйте его, тогда да, это ошибка в AIDE. i
имеет частный доступ в a
и поэтому вы не можете использовать его вне a
, Компилятор Java сказал бы:
b.java:5: ошибка: у меня есть личный доступ в System.out.println(super.i); ^
В Java подавляющее соглашение заключается в использовании начальных символов верхнего регистра в именах классов. Вы можете делать то, что вам нравится, в своем собственном коде, но при работе с другими людьми или обращении за помощью, возможно, лучше следовать соглашениям. Так A
не a
, а также B
не b
(для занятий).