2014-01-13 60 views
1

比方說,我有一個類PHP構造函數:「繼承」的構造函數會使用Inherited或Parent類的overriden方法嗎?

class Item { 

public function __construct($id) { 
    if(!empty($id)) { 
     $this->doSomethingWithID($id); 
    } 
} 

public function dummyMethod() { 
    //does Something. 
} 

protected function doSomethingWithID($id) { 
    //Does something with the ID 
} 

} 

如果我有一個繼承的類是這樣的:

class Product extends Item { 

public function __construct() { 
     parent::__construct(); 
} 

protected function doSomethingWithID($id) { 
     //OVERRIDES THE PARENT FUNCTION 
} 

} 

將產品類中使用重載的方法?還是會使用Parent方法?

+1

你可以試試看看 –

+0

沒辦法,因爲我正在處理別人的代碼,沒有找到一個安全的測試方法,只是想確保它按我想的方式工作,所以我可以繼續分析它。謝謝 – JuanBonnett

回答

1

更具體的東西是,它在代碼中得到的優先級更高。

與父母同名的方法的兒童優先。儘管你可以通過說super.method()來稱呼父母的方法。

+0

沒錯。如果孩子的構造函數使用在其類中被覆蓋的方法,它將不使用父類的方法。 – JuanBonnett

+0

對不起,我誤解了你的問題? – Alexander

+0

不,我給你的理由是,你說得對,當你說孩子們的方法優先。 – JuanBonnett

0

您已經在繼承的類中聲明瞭一個新的構造方法,因此它將使用該方法,但由於繼承的類調用父類構造方法,它將使用該方法。