4

インターフェイス内で抽象メソッドを宣言できないのはなぜですか? これは私のコードです。ありがとうございました。

<?php
interface Connection {
    public abstract function connect();
    public function getConnection();
}

abstract class ConnectionAbstract implements Connection() {
    private $connection;

    public abstract function connect();

    public function getConnection() {
        return $this->connection;
    }
}

class MySQLConnection extends ConnectionAbstract {
    public function connect() {
        echo 'connecting ...';
    }
}

$c = new MySQLConnection();
?>
4

3 に答える 3

15

インターフェイス内のすべての関数は、暗黙のうちに抽象的です。関数を宣言するときに、abstract キーワードを使用する必要はありません。

于 2010-09-11T22:25:56.017 に答える
7

インターフェイスを実装するクラスの要件には、インターフェイスで宣言されたメソッド シグネチャに対応する一連のパブリック メソッドが含まれている必要があることに注意してください。したがって、たとえば、定義された を持つインターフェースを宣言するとき、public abstract function文字通り、インターフェースを実装するすべてのクラスが という名前のパブリック抽象メソッドを持つ必要があると言っていますconnect。抽象メソッドを持つオブジェクトはインスタンス化できないため、決して使用できないインターフェイスを作成することになります。

于 2010-09-16T16:26:14.853 に答える
1

Connection インターフェイスの両方のメソッドは抽象的です。インターフェイス内のすべてのメソッドは暗黙的に抽象的です。したがって、connect() メソッドには抽象キーワードは必要ありません。

于 2015-05-01T19:16:03.663 に答える