Ich bin ein C++ Programmierer, der versucht, Best Practices der Java-Sprache zu verstehen. Bitte passen Sie Ihre Antworten entsprechend an :)Wie kann eine Klasse ein öffentliches Mitglied einer anderen Klasse sehen, wenn das Mitglied eine private Klasseninstanz ist
Ich habe ein Beispiel ausgearbeitet und ich verstehe nicht warum/wie das von mir beobachtete Verhalten möglich ist.
//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
*/
Seit Test
ist privat (gut nehme ich an), dann wie kann HelloWorld
sogar den Inhalt von TEST
(das heißt das i
Mitglied) manipulieren?
nun das seltsame Teil, wenn ich TEST
an eine private innere Klasse von Newfile
bewegt es jetzt so verhalten, als ich das obige Experiment erwartet haben würde zu verhalten, und ich bekam:
i in Newfile.TEST is defined in an inaccessible class or interface
'Test' ist package-private auf nicht vollständig privat. Dies bedeutet, dass auf Inhalte in demselben Paket zugegriffen werden kann. (Ich nehme an, dass sie in einem Paket sind) – SomeJavaGuy
Downvoter, bitte erklären Sie das? Downvoting ist so zufällig geworden, dass es seinen Wert verloren hat. Die Frage ist klar, prägnant, keine Hausaufgabe (offensichtlich). Wenn du eine Frage leicht oder offensichtlich findest, heißt das nicht, dass sie schlecht ist. – Kam
nicht der Downvoter, aber Sie könnten argumentieren, dass es keinen Forschungsaufwand gibt. Sie gehen davon aus, dass es privat ist, ohne zu erforschen, ob es tatsächlich der Fall ist. – SomeJavaGuy