Sagen wir, ich habe eine äußere Klasse und eine innere Klasse. Ist es möglich, eine innere Klassenmethode zu schreiben, so dass nur auf die äußere Klasse und nicht auf Klassen zugegriffen werden kann, die außerhalb der äußeren Klasse definiert sind, z. MyForeignClass
?Können Sie eine Methode einer inneren Klasse nur für die äußere Klasse zugänglich machen?
class MyForeignClass {
MyForeignClass() {
MyOuterClass instance = new MyOuterClass();
MyInnerClass innerClassInstance = instance.getMyInnerClassInstance();
// illegal method call, only MyOuterClass can call this
innerClassInstance.privateInnerClassMethod();
}
}
class MyOuterClass {
class MyInnerClass {
MyInnerClass() {}
void publicInnerClassMethod() {
// accessible from outside MyOuterClass
}
void privateInnerClassMethod() {
// accessible from inside MyOuterClass
}
}
MyInnerClass instance;
MyOuterClass() {
instance = new MyInnerClass();
instance.privateInnerClassMethod();
}
MyInnerClass getMyInnerClassInstance() {
return instance;
}
}
Machen Sie es ... privat? –
Deklarieren Sie die innere Klasse als private Klasse. –
@GlenPierce nein, weil 'publicInnerClassMethod' sollte "von außerhalb MyOuterClass zugänglich sein". Die Klasse "privat" auszuschließen, schließt das aus. –