抽象类和接口
抽象类和接口
抽象类
抽象类不能被实例化,只能是被继承使用
抽象类中可以定义抽象方法,也可定义普通方法,大多数情况下抽奖类至少会有一个抽象方法。
任何类都必须继承所有的抽象类才能实现使用,否则就会报错。
代码清单
// 抽象类
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()); //运行失败
浙公网安备 33010602011771号