Я программист на C++, который пытается понять лучшие практики языка Java. Пожалуйста, приспособите свои ответы соответственно :)Как класс может видеть открытый член другого класса, когда член является экземпляром частного класса.
Я разработал пример, и я не понимаю, почему и как поведение, которое я наблюдал, возможно.
//HelloWorld.java
public class HelloWorld{
public static void main(String []args){
Newfile nf = new Newfile();
nf.setTest(5);
System.out.println(Integer.toString(nf.test.i));
System.out.println("Hello World");
}
}
//Newfile.java
class TEST {
public int i;
}
public class Newfile{
public TEST test = new TEST();
public int setTest(int i) {
return test.i = i;
}
}
// THIS WORKED
/*
5
Hello World
*/
Поскольку Test
является частным (ну я полагаю), то, как можно HelloWorld
даже манипулировать содержанием TEST
(то есть i
члена)?
Теперь самое странное, когда я переехал TEST
на частный внутренний класс Newfile
теперь ведут себя, как я бы ожидал, что выше эксперимент себя, и я получил:
i in Newfile.TEST is defined in an inaccessible class or interface
'Test' является закрытым пакетом, не полностью закрытым. Это означает, что к нему можно получить доступ к содержимому в одном пакете. (Я предполагаю, что они в одном пакете) – SomeJavaGuy
Downvoter, пожалуйста, объясните? Downvoting, стал настолько случайным, что он потерял свою ценность. Вопрос, ясный, краткий, а не домашнее задание (очевидно). Когда вы находите вопрос легким или очевидным, это не значит, что это плохо. – Kam
не путник, но вы можете поспорить, что никаких усилий по поиску нет. Вы предполагаете, что это личное, не исследуя, действительно ли это так. – SomeJavaGuy