Java: Methode Kindklasse Anruf von übergeordneten Klasse-Schnittstelle

android_griezmann:

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.

dave:

Durch die Nutzung:

Test test = new Parent();
test.write();

Sie testist vom Typ Parentund ist nicht bekannt Child. Daher Ihre Ausgabe zeigt , auf der beiden Methoden der ParentKlasse 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 TestSchnittstelle, also:

public interface Test {
    public void print();
    public void write(); // This is required for it to be accessible via the interface
}

Ich denke du magst

Origin http://10.200.1.11:23101/article/api/json?id=478696&siteId=1
Empfohlen
Rangfolge