首页 > 编程笔记 > PHP笔记 阅读:17

PHP abstract抽象类

抽象类和接口都是不能被实例化的特殊类,可以在抽象类和接口中保留公共的方法,将抽象类和接口作为公共的基类。

PHP 中,可以使用关键词 abstract 创建一个抽象类,语法格式如下:

abstract class class_name {
    abstract public function func_name1(arg1, arg2);
    abstract function func_name2(arg1, arg2, arg3);
}

对抽象类的几点说明:
比如我们定义一个数据库抽象类,有很多种数据库,比如 MySQL、Oracle、MSSQL 等,虽然每种数据库都有不同的使用方法,但是对于数据库来说都有一些共同的操作部分,比如建立数据库链接、查询数据、关闭数据库链接等。这样我们就能抽象出可适用于不同数据库操作的抽象基类。

如下示例定义一个抽象 Database 类:
abstract class Database {
    abstract function connect($host,$username,$pwd,$db);
    abstract function query($sql);
    abstract function fetch();
    abstract function close();
    function test(){
        echo 'test';
    }
}
下面定义一个 MySQL 类,继承自抽象基类 Database。
class mysql extends Database {
    protected $conn;
    protected $query;
    function connect($host,$username,$pwd,$db){
        $this->conn = new mysqli($host,$username,$pwd,$db);
    }      
    function query($sql){
        return $this->conn->query($sql);
    }
    function fetch(){
        return $this->query->fetch();
    }
    function close(){
        $this->conn->close();
    }
}
抽象类中的抽象方法必须被子类实现(除非该抽象类的子类也为抽象类),否则会报错;抽象类中的非抽象方法可不被子类实现(如示例中的 test() 方法)。非抽象方法必须包含实体,抽象方法不能包含实体。

编程帮,一个分享编程知识的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「编程帮」,你已然超越了90%的程序员!

编程帮二维码
微信扫描二维码关注

所有教程

优秀文章