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

请记住,实现接口的类的要求必须包含一系列与接口中声明的方法签名相对应的公共方法。因此,例如,当您声明一个具有 defined 的接口时public abstract function,您实际上是在说实现该接口的每个类都必须有一个名为 的公共抽象方法connect。由于无法实例化具有抽象方法的对象,因此您最终将编写一个永远无法使用的接口。

于 2010-09-16T16:26:14.853 回答
1

Connection 接口中的两个方法都是抽象的。接口中的所有方法都是隐式抽象的。因此 connect() 方法不需要抽象关键字。

于 2015-05-01T19:16:03.663 回答