Ich habe eine Frage zu Vererbung und Bindung.Java-Superklasse Aufruf einer Methode in einer Unterklasse erstellt
Was passiert, wenn ich eine neue Methode in einer Unterklasse erstelle und versuche, sie mit der Oberklassenreferenz aufzurufen?
Ich weiß, dass es zuerst den Typ und danach das Objekt überprüfen wird. Also nach den Regeln wird das nicht funktionieren, weil diese Methode nicht in der Oberklasse deklariert ist.
Aber gibt es keine Möglichkeit, es zu überwinden?
Ich meine bedeutet Vererbung bedeuten, dass Sie jede einzelne Methode in der Oberklasse deklarieren müssen, und wenn Sie etwas für Unterklasse ändern möchten, können Sie es nur außer Kraft setzen? Also, wenn ich plötzlich merke, dass eine meiner Unterklassen eine spezielle Methode benötigt, oder eine Überladung benötigt, dann muss ich sie entweder zuerst in der Oberklasse deklarieren oder gar vergessen?
Selbst wenn dies möglich wäre, sollte es nie gemacht werden. Eine Superklasse sollte keine Wissensanforderung für ihre Kinder haben. –
Re '" Aber gibt es keine Möglichkeit, es zu überwinden? "" - es gibt nichts zu überwinden, da dies nie getan werden sollte. Erwägen Sie, die zugrunde liegende Motivation für diese Frage zu veröffentlichen, da Ihre Frage tatsächlich ein [XY-Problem] (http://mywiki.wooledge.org/XyProblem) ist, in dem Sie fragen, "wie behebe ich dieses Codeproblem", wenn die beste Lösung ist einen gänzlich anderen Ansatz zu verwenden. Denken Sie daran, uns das Gesamtproblem zu nennen, das Sie lösen möchten, und nicht, wie Sie es gerade lösen wollen. –
Was würden Sie erwarten, wenn Sie die Methode in einer Instanz der Superklasse aufrufen, die * nicht * eine Instanz der Unterklasse ist, die die Methode deklariert? –