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"; } }