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?
Es gibt keine Notwendigkeit für die abstrakten Deklarationen, da jede erweiterende Klasse die Methoden der Schnittstelle trotzdem implementieren muss. – AlexP