2016-05-04 38 views
0

paar Tage machen vor ich auf einem Vorstellungsgespräch war, war ich eine Frage wie dieser fragt:Abstrakte Klasse, wie Methode abstrakt

Es ist eine abstrakte Klasse A mit zwei Methoden foo und bar, von generiert es abgeleitete Klasse C, die nur die Methode foo implementiert wurde. Welche Änderungen müssen in dem Skript nehmen, um es funktioniert, während der Implementierung und Schnittstellenklassen A zu machen und C nicht

abstract class A { 
    abstract public function foo(); 
    abstract public function bar(); 
} 

class C extends A { 
    public function foo() { 
     // some code 
    } 
} 

geändert werden soll, ich sagte: okay wir können einfach eine Methode, um unsere C Klasse hinzufügen

public function bar() { 
    // 
} 

sie sagte, dies in Ordnung ist, aber was ist, wenn Sie diese Methode nicht hinzufügen können, und Sie können nicht abstrakte Klasse ändern A (und seine Methoden).

Und es gibt zwei Möglichkeiten, entweder meine Interviewer sind Narr oder ich bin Narr und etwas fehlt.

I php.net Dokumentation über abstrakte Klassen gelesen haben und ich keine andere Lösung sehen (natürlich kann ich Klasse machen A nicht abstrakt oder abstract modifier von bar Methode entfernen, aber ich darf nicht tun).

Hilf mir bitte, denn diese Frage lässt mich nicht schlafen!

+1

Sie dürfen nichts in den 2 Klassen ändern, dann wie können Sie es beheben? Ihr Interviewer ist ein Werkzeug, da der obige Code immer einen schwerwiegenden Fehler zurückgibt. Das einzige, was einem einfällt, ist, dass "C" auch eine abstrakte Klasse ist, aber das kannst du nicht tun, denke ich? – Daan

Antwort

1

Sie müssen deklarieren Klasse C ist abstrakt.

+0

Ich weiß das, aber ich weiß nicht, ob es eine andere Lösung gibt, aber danke für die Antwort – user4785882