So habe ich ein Problem, das so etwas wie folgt aussieht:Java geordnete Klasse Instanziierung Aufruf Unterklasse Methode, nicht sicher, warum
package com.blah.A_package;
public class A
{
public void f() {
g();
}
protected void g() {
System.out.println("superclass g()");
}
}
package com.blah.B_package;
public class B extends com.blah.A_package.A
{
protected void g() {
System.out.println("subclass g()");
}
}
public static void main(String[] args)
{
A scratch = new A();
scratch.f();
}
Wenn er gestartet wird, druckt es aus „Unterklasse g()“ statt der erwarteten „Super G()".
Wir erstellen Objekte sowohl der Oberklasse als auch der Unterklasse (das ist durch Reflexion auf einem Glas), kleben sie in einer Karte und ziehen sie dann heraus, wie wir sie brauchen, aber wir haben durch Ausdrucken verifiziert die object.getClass(). getName() und sehen, dass wir tatsächlich mit der Superklasseninstanziierung arbeiten.
Wie auch immer, wenn wir die Anwendung ausführen, verwendet sie aus irgendeinem Grund die Unterklassenkopie der Methode und nicht die Oberklassen, obwohl das Objekt eine Instanziierung der Oberklasse ist (dh es sollte nicht einmal über die Methoden der Unterklassen wissen)). Ist das etwas, das mir und meinen Mitarbeitern nicht bekannt ist? Wir sind völlig ratlos, warum das jemals passieren würde.
Sie machen eine Klasse, um ein Paket zu verlängern ??? Das habe ich noch nie zuvor gesehen! – CodeBlue
Dies ist Java vollständig nicht ausführbar. Wo sind die Funktion Rückgabetypen ???? – ControlAltDel
Ihr Code ist in vielerlei Hinsicht falsch, bitte korrigieren Sie sie zuerst :) – fixmycode