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 ?>

 

posted @ 2014-05-13 17:13  安全大可  阅读(467)  评论(0)    收藏  举报
真正的安全感源自于自身的实力
回顶部