2016-04-20 163 views
2

考慮以下幾點:我應該在抽象類實現接口時創建抽象方法嗎?

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... 
    } 

{ 

這個工作過程,然而,我想知道如果我要補充的接口方法的抽象方法在BaseClass像這樣:

abstract class BaseClass implements SomeInterface { 

    abstract public function foo(); 

    abstract public function bar(); 

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

} 

什麼是最好的在這種情況下練習?

+0

不需要抽象聲明,因爲無論如何擴展類都需要實現接口的方法。 – AlexP

回答

2

我想知道如果我要補充的接口方法作爲BaseClass的抽象方法

沒有,有沒有必要的,除非你想有具體實現在抽象類沒有受益於這樣做。無論如何,擴展抽象類的類將必須提供實現來滿足滿足接口。