为什么我不能在接口中声明抽象方法?
<?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();
?>
接口中的所有函数都是隐式抽象的。声明函数时不需要使用abstract关键字。
请记住,实现接口的类必须包含一系列与接口中声明的方法签名相对应的公共方法。因此,例如,当您声明一个定义了
public abstract function
的接口时,您实际上是在说每个实现该接口的类都必须有一个名为 connect
的公共抽象方法。由于具有抽象方法的对象无法实例化,因此您最终将编写一个永远无法使用的接口。
Connection接口中的两个方法都是抽象的。接口中的所有方法都是隐式抽象的。因此 connect() 方法不需要使用 Abstract 关键字。