PHP:接口中的抽象方法

时间:2010-09-11 22:19:46

标签: php oop interface abstract concrete

为什么我不能在界面中声明一个抽象方法?这是我的代码。谢谢。

<?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 个答案:

答案 0 :(得分:13)

界面中的所有函数都是隐式抽象的。在声明函数时不需要使用abstract关键字。

答案 1 :(得分:6)

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

答案 2 :(得分:1)

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