Ich weiß nicht, ob diese Frage gültig ist oder ich tue etwas falsch mit der Definition der übergeordneten Klasse Struktur.
Aber die folgenden sind die Bildung der Klassen und Schnittstellen sind.
public interface Test {
public void print();
public void write();
}
class Parent implements Test{
@Override
public void print() {
System.out.print("This is parent class");
}
@Override
public void write() {
System.out.print("This is write method in parent class");
}
}
class Child extends Parent{
@Override
public void print(){
System.out.print("This is child class);
}
}
Erwartete Ausgabe, wenn ich Methode rufen Sie die Schnittstelle
Test test = new Parent();
test.print();
Es sollte der Druckmethode aus der Child-Klasse aufrufen.
Und wenn ich rufe Methode Schnittstelle
Test test = new Parent();
test.write();
Es sollte Schreibverfahren aus der übergeordneten Klasse aufrufen.
So jetzt ist es nicht passiert, in beiden Fällen ist es die Methode von der übergeordneten Klasse ruft.
Also jede Anregung oder Antwort sind sehr geschätzt.
Durch die Nutzung:
Test test = new Parent();
test.write();
Sie test
ist vom Typ Parent
und ist nicht bekannt Child
. Daher Ihre Ausgabe zeigt , auf der beiden Methoden der Parent
Klasse aufgerufen werden.
Versuchen:
Test test = new Child();
test.print(); // Will call Child::print()
test.write(); // Will call Parent::write()
und Sie sollten erreichen, was Sie wollen.
NB Damit dies funktioniert, müssen Sie hinzufügen , write()
um Ihre Test
Schnittstelle, also:
public interface Test {
public void print();
public void write(); // This is required for it to be accessible via the interface
}