PHP面向对象5之特性-多态
1 <?php 2 /** 3 * PHP面向对象特性 --抽象类和方法(abstract) 4 * 抽象方法很特殊,只在父类中声明,但在子类中实现,只有声明为abstract的类可以声明抽象方法 5 * 规则: 6 * 1、抽象类不能被实例化,只能被继承 7 * 2、抽象方法必须被子类方法重写 8 * 只要类里面有抽象方法,那么该类必须要加上abstract,否则会报错 9 */ 10 abstract class Computer{ 11 public $_name='dell'; 12 //在抽象类里创建一个抽象方法 13 //抽象方法不能实现方法体的内容 14 abstract public function _run(); 15 public function _run2(){ 16 echo '我是父类的方法'; 17 } 18 } 19 //抽象类是给子类用来继承的,实现一种规范和资源的共享 20 final class NoteComputer extends Computer{ 21 //抽象类中的抽象方法必须要被子类重写,普通方法不需要重写 22 function _run(){ 23 echo '我是子类的方法'; 24 } 25 } 26 $noteCom = new NoteComputer(); 27 $noteCom->_run2(); 28 echo $noteCom->_name; 29 ?>
1 <?php 2 /** 3 * PHP面向对象特性 --接口(interface) 4 * 接口定义了实现某种服务的一般规范,声明了所需的函数和常量,但不指定如何实现, 5 * 之所以不给出实现的细节,是因为不通的实体可能需要用不同的方式来实现公共的方法定义。 6 * 关键是要建立必须实现的一组一般原则,只要满足这些原则,就能实现这个接口。 7 * 规则: 8 * 1、类全部为实现方法(不需要声明abstract) 9 * 2、接口抽象方法必须为public 10 * 3、成员(字段)必须是常量 11 * 12 * 是用接口还是抽象类? 13 * 如果你要继承多个类的方法规范,用接口。 14 * 如果你要共享一个方法体的内容,用抽象类。 15 * 16 */ 17 18 //创建一个接口,接口也不能被实例化,接口是为了规范实现它的子类,以达到统一的目的。 19 interface Computer{ 20 //成员字段必须为常量 21 const NAME='Dell'; 22 //接口里的所有方法都是抽象方法,并且不用写abstract 23 public function _run(); //不能写方法体! 24 public function _run2(); 25 } 26 interface Computer2{ 27 28 } 29 //子类继承接口,叫做实现接口,PHP可以多实现接口,但是不能多继承普通类 30 class NoteComputer implements Computer,Computer2{ 31 public function _run() { 32 echo '必须要重写_run'; 33 } 34 35 public function _run2() { 36 echo '必须要重写_run2'; 37 } 38 } 39 $noteCom = new NoteComputer(); 40 echo $noteCom->_run(); 41 echo $noteCom->_run2(); 42 43 44 ?>
1 <?php 2 /** 3 * PHP面向对象特性--多态 4 * 多态是指OOP能够根据使用类的上下文来重新定义或改变类的性质或行为, 5 * 或者说接口的多种不同的实现方式即为多态。把不同的子类对象都当作父类来看, 6 * 可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应 7 * 需求的不断变化。 8 * 9 * 一个东西交给不同的人去执行,而产生不同的结果。就是多态。 10 * 比如电脑的话,交给小学生,就会lol坑人。交给程序员,就会写代码。 11 */ 12 13 //创建一个接口来规范运行的方法 14 interface Computer{ 15 public function version(); 16 public function work(); 17 } 18 //创建一个笔记本类来实现接口 19 class NoteComputer implements Computer{ 20 public function version() { 21 echo '笔记本'; 22 } 23 24 public function work() { 25 echo '看电影'; 26 } 27 } 28 //创建一个台式机类来实现接口 29 class DeskComputer implements Computer{ 30 public function version() { 31 echo '台式机'; 32 } 33 34 public function work() { 35 echo '打lol'; 36 } 37 } 38 //创建一个用户类 39 class Person{ 40 //创建一个方法来接收电脑(笔记本或者台式机),将他们的对象传进来 41 public function _using($type){ 42 echo '小王用'; 43 $type->version(); 44 $type->work(); 45 } 46 } 47 48 //多态的原理就是类都写好了,不用去修改,只要更改类外调用的参数,结果就会更改。 49 50 //有一个接口,两个类,一个是笔记本的类,一个是台式机的类, 51 //创建笔记本 52 $noteCom = new NoteComputer(); 53 //创建台式机 54 $deskCom = new DeskComputer(); 55 //创建人 56 $pers = new Person(); 57 //使用电脑 58 $pers->_using($noteCom);//引用传递对象 59 ?>
本文发于:安全大可文章转载请注明出处:http://im404.cnblogs.com
相关事宜请联系:im404@qq.com

浙公网安备 33010602011771号