2016-04-20 3 views
2

Angesichts der folgenden:Sollte ich abstrakte Methoden erstellen, wenn meine abstrakte Klasse eine Schnittstelle implementiert?

interface SomeInterface { 

    public function foo(); 
    public function bar(); 

} 

abstract class BaseClass implements SomeInterface { 

    public function baz() { 
     echo 'baz'; // Shared logic 
    } 

} 

class ConcreteClass extends BaseClass { 

    public function foo() { 
     // foo logic... 
    } 

    public function bar() { 
     // bar logic... 
    } 

{ 

Dies funktioniert wie es ist, aber ich frage mich, wenn ich die Interface-Methoden als abstrakte Methoden in der BaseClass wie so hinzufügen sollte:

abstract class BaseClass implements SomeInterface { 

    abstract public function foo(); 

    abstract public function bar(); 

    public function baz() { 
     echo 'baz'; // Shared logic 
    } 

} 

Was am besten ist in diesem Fall üben?

+0

Es gibt keine Notwendigkeit für die abstrakten Deklarationen, da jede erweiterende Klasse die Methoden der Schnittstelle trotzdem implementieren muss. – AlexP

Antwort

2

Ich frage mich, ob ich die Interface-Methoden als abstrakte Methoden in der Baseclass

Nein, es gibt keine Notwendigkeit, dass hinzufügen sollte und wenn Sie konkrete Umsetzung in der abstrakten Klasse haben wollen nicht da ist davon profitieren. Klasse, die Ihre abstrakte Klasse erweitert, muss eine Implementierung bereitstellen, um die Schnittstelle trotzdem zu erfüllen.

Verwandte Themen