php中abstract和interface的区别
一:interface(接口)
1:接口中每个方法都只是声明,而没有实现。
2:实现该方法的类必须包括接口中所有声明的方法。
3:接口中的方法只能用public
//定义User接口
interface User
{
//接口中有两个方法,切接口方法必须是public
public function add($str);
public function edit($str);
}
class UserTable implements User //implements关键字实现User接口中的方法
{
//上述接口中的所方法都必须要定义,否则程序报错
public function add($str)
{
echo $str;
}
public function edit($str)
{
echo $str;
}
}
$user = new UserTable;
$user->add('1'); 二:abstract(抽象类)
1:抽象类不能实例化
2:抽象类可以定义普通方法,也可以强制要求子类定义这些方法。
3:普通方法可用于公用方法或重复方法,减少代码
<?php
abstract class AbstractClass
{
// 强制要求子类定义这些方法
abstract protected function getValue();
abstract protected function prefixValue($prefix);
// 普通方法(非抽象方法)
public function printOut() {
print $this->getValue() . "\n";
}
}
class ConcreteClass1 extends AbstractClass
{
protected function getValue() {
return "ConcreteClass1";
}
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass1";
}
}