2012-07-26 63 views
6

我可以重寫子類中的PHP方法,並更改簽名中的參數,如下所示。PHP子類可以改變重寫方法的參數嗎?

class theParent { 
    function myMethod($param1) { 
    // code here 
    } 
} 

class theChild extends theParent { 
    function myMethod($param1, $param2) { 
    // code here 
    } 
} 

我測試了這一點,它工作正常,並不會引發任何錯誤。我的問題是,這是不好的形式?還是OOP的基本原則?

如果父方法聲明爲抽象,則子簽名不能偏離。據推測,如果你需要強制執行界面的這個方面,這是使用的機制?

+1

這孩子上課是不是第一類的子類。更何況這是無效的語法... – nickb 2012-07-26 21:49:25

+0

它被稱爲**重寫**。如果您想阻止子類重寫某個方法,請使用[final](http://php.net/manual/en/language.oop5.final.php)關鍵字。 – 2012-07-26 22:33:04

回答

0

只要

class theChild extends theParent { 
} 

這是OOP的一個很好的例子。

0

你所做的被稱爲覆蓋,它沒有什麼不好,但如果你想讓孩子類堅持父母的簽名更好地使用下面的接口你應該只給出簽名和子類mut實現他們正如他們宣佈的那樣。

interface theParent { 
     function myMethod($param1) ; 
    } 

    class theChild extends theParent { 
     function myMethod($param1) { 
     // code here 
     } 
    } 

希望它能幫助:)

相關問題