首頁 >後端開發 >php教程 >interface - php多重介面方法重複問題

interface - php多重介面方法重複問題

WBOY
WBOY原創
2016-08-18 09:16:27987瀏覽

<code>interface A {
    public function code();
}

interface B {
    public function code(string $string);
}

class C implements A,B {
//...code
}</code>

當C同時需要實作這兩個介面的時候,有什麼方法同時使用 A,B兩個介面中的code方法? ? ? ?

本地測試只能使用其中一個方法

回覆內容:

<code>interface A {
    public function code();
}

interface B {
    public function code(string $string);
}

class C implements A,B {
//...code
}</code>

當C同時需要實作這兩個介面的時候,有什麼方法同時使用 A,B兩個介面中的code方法? ? ? ?

本地測試只能使用其中一個方法

php不能overloading(同方法名,但參數不一致),能夠在繼承中overriding(同方法名,且不論參數是否一致)。
也就是說php的參數如何變,只要方法名字一樣都被當作本類的同一個方法。

當然作為動態語言,我們可以用魔法方法模擬java的overloading參考:http://php.net/manual/en/lang...

有個粗挫的方法,你把AB介面的具體邏輯都整合到C介面裡面,直接呼叫C介面^_^

func_get_args http://php.net/manual/en/func...

本身這種寫法就是個嘗試錯誤,公用方法寫在外面,類中直接調用,不要每一個口都寫個一樣的,維護起來也巨麻煩

可以了解一下PHP的性狀。

php不支援多態性, 所以最好避免這種寫法

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn