Wir wissen, dass Objekte innerer Klassen nur aus Objekten der umgebenden Klasse entstehen können. Warum also kann ein Objekt einer inneren Klasse eine nicht-statische Methode einer einschließenden Klasse außerhalb der Definition der einschließenden Klasse nicht aufrufen?Warum ist das Aufrufen einer Methode (nicht statisch) der äußeren Klasse mit einem Objekt einer inneren Klasse außerhalb der Definition der äußeren Klasse nicht erlaubt?
public class OuterClass
{
public class InnerClass
{
public void innerMethodA()
{
outerMethodA(); // This is OK.
new InnerClass().outerMethodA(); // This is not OK.
}
}
public void outerMethodA()
{
System.out.println("This is OuterMethodA");
}
}
public class ExtraClass
{
public void testMethod()
{
OuterClass outerObj = new OuterClass();
OuterClass.InnerClass innerObj = outerObj.new InnerClass();
outerObj.outerMethodA(); // This is OK.
innerObj.outerMethodA(); // This is not. Why is that?
}
}
Bitte entschuldigen Sie etwaige Fehler in der Formatierung oder die Art, wie ich meine Frage vorlege. Ich habe es nach einigen Abstimmungen bearbeitet. Ich versuchte mein Bestes. Vielen Dank.
Ich denke, das braucht Code. Ich bin mir nicht sicher, was du meinst. – markspace
Sie benötigen eine Instanz einer beliebigen Klasse, um ihre nicht statischen Methoden aufzurufen. Innere Klassen haben diese Instanz nicht magisch, nur weil sie eingeschlossen ist –
Warum möchten Sie so etwas tun? Was ist die treibende Kraft hinter dieser Frage? In welcher Situation würde das Sinn machen? –