Aufrufende Funktion von einer erweiterten Klasse
Ich würde gerne eine Funktion aufzurufen, die von einer erweiterten Klasse. Wie kann das getan werden?
class Main{
Function();
}
class Other extends Main{
public void Function() { /* The function code */ }
}
Meinst du vielleicht zum Aufruf der super-Methode, D. H.,
In Bezug auf Ihren Kommentar
super.Function()
? Deine Frage ist sehr vage und lässt viele wichtige Details. Können Sie das klären die Dinge, so haben wir nicht zu erraten?In Bezug auf Ihren Kommentar
You have it the other way around..I want the Main Class to call a function that was written in the Other Class.
: Nein, Sie nicht, werden Sie nie wollen, als eine übergeordnete Klasse sollte von der Klasse nie hängt von der Kind-Klasse, immer. Anstatt uns sagen, wie in code, den Sie versuchen zu lösen dieses problem, sagen Sie uns, was insgesamt ein problem, das Sie versuchen zu lösen ist. Ich vermute, dass die Vererbung ist nicht beteiligt in der richtigen Lösung.InformationsquelleAutor user1042304 | 2012-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor neo
Können Sie definieren
Main
als eine abstrakte Klasse, und definierenfunction()
als abstrakte Methode, die implementiertOther
Unterklasse. Irgendwann müssen Sie erstellen eine Instanz vonOther
, obwohl.Könntest du den kompletten source? Sie sollten wahrscheinlich nur den Aufruf
Function()
in der main-Klasse, sondern alsOther.Function()
, da Main hat dieFunction
Methode selbst-es ist nur umgesetzt durchOther
.InformationsquelleAutor Louis Wasserman
Aktualisiert nach Ihre Kommentare.
Nein, Sie sollten niemals auf diese. Bitte siehe mein Kommentar zu deiner ursprünglichen Frage. Um besser zu helfen, sagen Sie uns die details, wie z.B. das Allgemeine problem, das Sie versuchen zu lösen, nicht, wie Sie versuchen, es zu lösen.
Was ist falsch mit der Verwendung einer abstrakten Funktion?
Methode, keine variable.
InformationsquelleAutor Abdullah Jibaly
Klasse
Main
hat keine besonderen Rechte mit Hinblick auf das, was in der KlasseOther
ist, dass Sie nicht in der KlasseMain
. Auch einMain
Objekt ist nicht unbedingt einOther
Objekt. So definieren Sie das Verhalten, wenn ein Objekt der KlasseMain
nennenFunction()
. Sie können entwederFunction()
zu Abstrakt, das heißt, Sie können nicht erstellen Sie ein Objekt der KlasseMain
und KlasseOther
gezwungen ist, zu definierenFunction()
oder Abstrakt sein selbst, oderMain
für Objekte, dieMain
s und nichtOther
s.So oder so ist akzeptabel, je nach situation. Sie haben zu geben mehr details, wenn Sie möchten Hilfe bei der Auswahl, welche ist besser in Ihre situation.
Beispiel:
oder
Sie können nicht beides haben. Entweder man will eine Funktion aufrufen, die auf einem erweiterten Klasse oder nicht. Wenn die erweiterte Klasse ist nicht die änderung der Funktion, dann in welchem Sinne ist es "eine Funktion von einer erweiterten Klasse"?
Ich möchte dem Aufruf der Funktion erstellt in der erweiterten Klasse. Aber dein Vorschlag hier ist, zeigt Funktion() als leer definiert in der Main-Klasse, und dann wieder definiert in der Erweiterten Klasse.
Ich fügte hinzu, ein Beispiel für Sie.
InformationsquelleAutor Old Pro