PHP: абстрактный метод в интерфейсе - PullRequest
3 голосов
/ 12 сентября 2010

почему я не могу объявить абстрактный метод в интерфейсе? Это мой код Спасибо.

<?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();
?>

Ответы [ 3 ]

13 голосов
/ 12 сентября 2010

Все функции в интерфейсе неявно абстрактны.При объявлении функции нет необходимости использовать ключевое слово abstract.

6 голосов
/ 16 сентября 2010

Помните, что требование к классу, который реализует интерфейс, должно содержать серию открытых методов, которые соответствуют сигнатурам методов, объявленным в интерфейсе.Так, например, когда вы объявляете интерфейс, который имеет определенный public abstract function, вы буквально говорите, что каждый класс, реализующий интерфейс, должен иметь открытый абстрактный метод с именем connect.Поскольку объекты с абстрактными методами не могут быть созданы, вы в конечном итоге создадите интерфейс, который никогда не будет использоваться.

1 голос
/ 01 мая 2015

Оба метода в интерфейсе подключения являются абстрактными.Все методы в интерфейсе неявно абстрактны.Поэтому абстрактное ключевое слово не требуется для метода connect ().

...