重要概念
抽象类:
当类中有一个方法为抽象方法,该类即为抽象类。继承一个抽象类时,应该实现其所有的抽象方法。
name = $name; $this->speed = $speed; } abstract function run(); public function __get($k) { if(in_array($k, array('name'))) { trigger_error("禁止访问私有成员:" . $k, E_USER_ERROR); return; } return $this->$k; }}?>
接口:
接口定义了一系列必要的操作,实现接口的类必须实现接口的方法。
name = $name; $this->age = $age; } public function say() { echo $this->name . ', age is ' . $age . ''; } public function __get($k) { if($k == 'name') { trigger_error("禁止访问私有成员:" .$k, E_USER_ERROR); return; } return $this->$k; }}?>
契约式编程
使用抽象类和接口实现契约式编程,这样可以使结构更加清晰,扩展性高。适合团队开发,例如可以通过定义一个数据库操作模型模块,使所有需要操作数据库的模块派生类都必须实现模型中的方法,这样就实现了数据层与控制层的分离,编写控制层只需要有数据层的文档即可知道基本操作。
如何使用抽象类?
抽象类定义基本方法,而具体的功能实现交给具体的类,当需要更换操作时,只需要重写抽象类中的基本方法。
如何使用接口?
接口是用来约束一个类型,实现面向对象编程的多态性。定义一个类型,而这个类型会派生很多的类型,但是这些类型都需要有基类的这些操作。