2017-02-17 16 views
1

同じメソッド名を持つ2つのインターフェイスがあります。しかし、両方のメソッドには異なるシグネチャがあります。私の情報によると、同じメソッド名と同じシグネチャを持つ2つのインターフェースは動作しません。しかし、この場合、署名(引数の数)は異なります。それではなぜプログラムが機能していないのですか?同じメソッド名でもシグネチャが異なる2つのインターフェイスを実装する

<?php 

interface Car { 
    public function setModel($name); 
} 

interface Vehicle { 
    public function setModel(); 
} 

class miniCar implements Car, Vehicle { 
    private $model; 

    public function setModel($name) 
    { 
    $this -> model = $name; 
    } 

    public function setModel() 
    { 
    echo 'do nothing'; 
    } 

} 


$obj = new miniCar(); 

?> 
+0

インタフェースの全体の目的は、特定の署名を持つように実装するクラスを強制するので、のないオーバーロードがないので、同じ方法が異なるシグネチャを持つ2つのインターフェースを有することは、まったく意味をなさないPHPのメソッド –

答えて

2

PHP関数をオーバーロードすることはできません。彼らは異なる名前を持たなければなりません。

PHP function overloading

+0

E Rullmann、私はこの事実を知らなかった。私の知識を増やしてくれてありがとう。 – WeAreRight

関連する問題