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