抽象类和接口

抽象类和接口

抽象类

抽象类不能被实例化,只能是被继承使用

抽象类中可以定义抽象方法,也可定义普通方法,大多数情况下抽奖类至少会有一个抽象方法。

任何类都必须继承所有的抽象类才能实现使用,否则就会报错。

代码清单
    // 抽象类
    abstract class ShopProductWriter{
        protected $products = [];
    
    // 定义接收对象,并且调用对象中的方法
        public function addProduct(Product $product)
        {
            $product->test();
        }
    
        abstract public function write();
    }
    
    class ErroredWriter extends ShopProductWriter{
    
        public function write()
        {
            echo "我从重了方法\n";
        }
    }
    
    class Product{
        public function __construct()
        {
            echo "Product";
        }
    
        public function test()
        {
            echo "ndiwaonfioanwfa"."\n";
        }
    }
    
    $Err = new ErroredWriter();
    $Err->write();
    $p = new Product();
    $Err->addProduct($p);

接口

接口里面只有是抽象方法,可以定义实现功能的方法,但是不能有方法体。

接口存在的意义:接口可以淡化为设计文档,起到一个团队基本契约的作用

代码清单
<?php

interface DB{
    public function connect();
}

class mysqldb implements DB{
    public function connect(){
        echo "连接MySQL \r \n";
    }
    
    public function fly(){
        echo "fly";
    }
}

class mongodb implements DB{
    public function connect(){
        echo "连接mongodb \r \n";
    }
}
class connectDb{
    function demo($d){
        $d->connect();
    }
}
$obj = new connectDb();
$obj -> demo(new mysqldb()); //运行成功
$obj -> demo(new mongodb()); //运行失败



posted on 2020-08-06 18:00  誓_言  阅读(47)  评论(0)    收藏  举报

导航