php面向对象进修   
               添加时间:2013-8-12 点击量: 
 
              
近期跟着别人开辟一套php法度,深感本身面向对象很痴人,于是再次巩固了一下面向对象的进修,本身收拾了一下这几天面向对象的器材,给大师分享!!
面向对象的三大特点:
封装 -- 隐蔽内部实现,稳定外部接口
持续 -- 子类持续父类成员,实现代码复用
多态 -- 不合子类对同一消息做出不合的反应
一、接口 -- 是一套规范,遵守这个规范就可以实现功能
在PHP中,接口同样是一种规范和标准,可以束缚类的行动,定义一个接口不指定具体的实现。
接口是把隐式公共办法和属性组合起来,以封装特定功能的一个凑集。一旦定义了接口,就可以在类中实现它。如许,类就可以支撑接口所指定的所有属性和成员。
重视:
     接口不克不及零丁存在。接口不克不及像实例化一个类那样实例化接口。接口不克不及包含实现其成员的任何代码,而只能定义成员本身。实现接口必须在引用接口的类中实现。
     一个类可以支撑多个接口,多个类也可以支撑雷同的接口。所以接口的概念让用户和其他开辟人员更轻易懂得其他人的代码。
二、多态性
1、指不合的对象收到雷同消息时,会产生不合行动
2、同一个类在不合的场合下发挥解析出不合的行动特点
三、抽象类和抽象办法
1、抽象类用来列举一个类所须要的行动
2、抽象类不明白供给具体实现办法
3、抽象类必须由其子类实现它的抽象办法(除非子类也具有抽象性)
4、抽象类不克不及被实例化
5、抽象类不克不及被锁(final润饰)
四、抽象类的应用处合
1、抽象类和抽象办法实现多态性
2、父类供给一系列规定,束缚子类的行动
3、父类可以供给一些共性的行动
以上就是我对面向对象的总结,下面就是具体的说说php面向对象的重点,难点!
类: [url=http://www.t00ls.net/#viewSource]链接标识表记标帜预览源代码[/url] [url=http://www.t00ls.net/#printSource]链接标识表记标帜打印[/url][url=http://www.t00ls.net/#about]链接标识表记标帜关于[/url]01<?php 
02/ 
03                                                类的根蒂根基常识 
04 1、类应用class关键字定义,类的名称每个单词首字母大写 
05 2、类的属性必须用封装关键字润饰(public、protected、private) 
06 3、类的办法可以不被封装关键字润饰,默认为:public 
07 4、类中的机关函数:__construct(){},默认为空,可初始化属性。 
08    也可以重载机关函数,有随便率性多个参数。重视:PHP中机关函数 
09        只能有一个。 
10 5、类中的析构函数:__destruct(){} 
11/
12/ 
13                                                类的封装关键字 
14 1、public                -- 公开的 
15 2、protected        -- 受保护的 
16 3、private     -- 私有的 
17   
18 就是因为应用了受保护的或私有的封装关键字,所以产生了读写办法, 
19 于是写办法可以验证数据的合法性;读办法可以将受保护或私有的属 
20 性保护起来不被外部批改。 
21   
22 4、__get(¥n){return ¥this->¥n;}  读办法 
23 5、__set(¥n,¥v){¥this->¥n=¥v;}   写办法 
24  
25/
26class People{ 
27        private ¥name; 
28        private ¥age; 
29        private ¥sex; 
30  
31        //机关函数 
32        function __construct(¥name,¥age=18,¥sex=男){ 
33                ¥this -> name = ¥name; 
34                ¥this -> age  = ¥age; 
35                ¥this -> sex  = ¥sex; 
36                echo ¥this -> show(); 
37        } 
38  
39        //析构函数 
40        function __destruct(){ 
41                //echo {¥this->name}被开释了!; 
42        } 
43  
44        //读属性 
45        function __get(¥n){ 
46                if(¥n == name){ 
47                        return ¥this -> ¥n; 
48                } 
49        } 
50  
51        //写属性 
52        function __set(¥n,¥v){ 
53                if(¥n == name){ 
54                        ¥this -> ¥n = ¥v; 
55                } 
56        }  
57  
58        public function show(){ 
59                return 恭喜你!创建{¥this->name}对象成功!; 
60        } 
61} 
62  
63/ 
64                                                持续 
65 1、应用关键字extends 
66 2、被持续的类叫做:父类(基类) 
67 3、持续的类叫做:子类(派生类) 
68 4、单一持续 
69 5、具有传递性,即:父类有的,子类也会有 
70 6、子类的封装关键字级别不克不及低于父类 
71 7、父类机关函数也会被持续 
72 8、重载 
73/
74class Stu extends People{ 
75          
76  
77        public function show(){ 
78                return parent::show().O(∩_∩)O哈哈~;  
79        } 
80} 
81¥stu = new Stu(张三); 
82echo ¥stu -> name; 
83?>
抽象类: [url=http://www.t00ls.net/#viewSource]链接标识表记标帜预览源代码[/url] [url=http://www.t00ls.net/#printSource]链接标识表记标帜打印[/url][url=http://www.t00ls.net/#about]链接标识表记标帜关于[/url]01<?php 
02/ 
03                                                抽象类 
04 1、应用abstract关键字润饰的类叫抽象类,类中至少有一个抽象办法, 
05        可以有具体办法。 
06 2、抽象类不克不及被实例化,不克不及被锁(final润饰),只能被持续 
07 3、抽象类必须由其子类实现它的抽象办法(除非子类也具有抽象性) 
08/
09abstract class Animal{ 
10        protected ¥name; 
11        protected ¥age; 
12        protected ¥weight; 
13  
14        abstract function __construct(); 
15  
16        abstract function eat(¥name); 
17  
18        abstract function sleep(); 
19  
20        static function show(¥what){ 
21                return 我是{¥what->name}!; 
22        } 
23} 
24  
25//Dog类 
26class Dog extends Animal{ 
27         function __construct(¥name,¥age,¥weight){ 
28                ¥this -> name = ¥name; 
29                ¥this -> age = ¥age; 
30                ¥this -> weight = ¥weight; 
31         }         
32  
33         function eat(¥n){ 
34                return ¥this->name.在吃.¥n; 
35         } 
36  
37         function sleep(){ 
38                return ¥this->name.睡的正酣!; 
39         } 
40  
41         function wangwang(){ 
42                return 汪汪叫!!!; 
43         } 
44} 
45  
46//Cat类 
47class Cat extends Animal{ 
48         function __construct(¥name,¥age,¥weight){ 
49                ¥this -> name = ¥name; 
50                ¥this -> age = ¥age; 
51                ¥this -> weight = ¥weight; 
52                echo ¥this->miaomiao(); 
53         }         
54  
55         function eat(¥n){ 
56                return ¥this->name.在吃.¥n; 
57         } 
58  
59         function sleep(){ 
60                return ¥this->name.睡的正酣!; 
61         } 
62  
63         function miaomiao(){ 
64                return 喵喵叫!!!; 
65         } 
66} 
67  
68¥dog = new Dog(旺财,4,10kg); 
69echo ¥dog->sleep(); 
70echo ; 
71¥cat = new Cat(龙猫,2,5kg); 
72echo ; 
73echo ¥cat->sleep(); 
74echo ; 
75echo Animal::show(¥dog); 
76echo ; 
77echo Animal::show(¥cat); 
78?>
接口: [url=http://www.t00ls.net/#viewSource]链接标识表记标帜预览源代码[/url] [url=http://www.t00ls.net/#printSource]链接标识表记标帜打印[/url][url=http://www.t00ls.net/#about]链接标识表记标帜关于[/url]01<?php 
02interface IUsb{ 
03  const name1=3.0接口; 
04  function type1(¥what); 
05  function power1(); 
06} 
07  
08interface IApi{ 
09  const name2=扩大插槽; 
10  function type2(); 
11  function power2(); 
12} 
13  
14class Pc implements IUsb,IApi{ 
15  
16        function type1(¥what){ 
17                if(¥what == IUsb::name1){ 
18                        return IUsb::name1.¥this->power1(); 
19                } 
20                else{ 
21                        return 接口不合错误,无法应用!; 
22                } 
23        } 
24  
25        function power1(){ 
26                return 接口正确,电源开启中...; 
27        } 
28  
29        function type2(){} 
30  
31        function power2(){} 
32} 
33  
34class Mp3 implements IUsb{ 
35  public ¥name = IUsb::name1; 
36  function type1(¥s){} 
37  function power1(){} 
38} 
39¥p = new Pc(); 
40¥mp3 = new Mp3(); 
41echo ¥p -> type1(¥mp3->name); 
42?>
对大师的php进修有所帮助,呵呵,反正这几天我重温面向对象收成很多,也提示广大同窗,温故而知新!!!!
文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
                     
                  
     
  
 
    
    
近期跟着别人开辟一套php法度,深感本身面向对象很痴人,于是再次巩固了一下面向对象的进修,本身收拾了一下这几天面向对象的器材,给大师分享!!
面向对象的三大特点:
封装 -- 隐蔽内部实现,稳定外部接口
持续 -- 子类持续父类成员,实现代码复用
多态 -- 不合子类对同一消息做出不合的反应
一、接口 -- 是一套规范,遵守这个规范就可以实现功能
在PHP中,接口同样是一种规范和标准,可以束缚类的行动,定义一个接口不指定具体的实现。
接口是把隐式公共办法和属性组合起来,以封装特定功能的一个凑集。一旦定义了接口,就可以在类中实现它。如许,类就可以支撑接口所指定的所有属性和成员。
重视:
     接口不克不及零丁存在。接口不克不及像实例化一个类那样实例化接口。接口不克不及包含实现其成员的任何代码,而只能定义成员本身。实现接口必须在引用接口的类中实现。
一个类可以支撑多个接口,多个类也可以支撑雷同的接口。所以接口的概念让用户和其他开辟人员更轻易懂得其他人的代码。
二、多态性
1、指不合的对象收到雷同消息时,会产生不合行动
2、同一个类在不合的场合下发挥解析出不合的行动特点
三、抽象类和抽象办法
1、抽象类用来列举一个类所须要的行动
2、抽象类不明白供给具体实现办法
3、抽象类必须由其子类实现它的抽象办法(除非子类也具有抽象性)
4、抽象类不克不及被实例化
5、抽象类不克不及被锁(final润饰)
四、抽象类的应用处合
1、抽象类和抽象办法实现多态性
2、父类供给一系列规定,束缚子类的行动
3、父类可以供给一些共性的行动
以上就是我对面向对象的总结,下面就是具体的说说php面向对象的重点,难点!
类: [url=http://www.t00ls.net/#viewSource]链接标识表记标帜预览源代码[/url] [url=http://www.t00ls.net/#printSource]链接标识表记标帜打印[/url][url=http://www.t00ls.net/#about]链接标识表记标帜关于[/url]01<?php 
02/
03 类的根蒂根基常识
04 1、类应用class关键字定义,类的名称每个单词首字母大写
05 2、类的属性必须用封装关键字润饰(public、protected、private)
06 3、类的办法可以不被封装关键字润饰,默认为:public
07 4、类中的机关函数:__construct(){},默认为空,可初始化属性。
08 也可以重载机关函数,有随便率性多个参数。重视:PHP中机关函数
09 只能有一个。
10 5、类中的析构函数:__destruct(){}
11/
12/
13 类的封装关键字
14 1、public -- 公开的
15 2、protected -- 受保护的
16 3、private -- 私有的
17
18 就是因为应用了受保护的或私有的封装关键字,所以产生了读写办法,
19 于是写办法可以验证数据的合法性;读办法可以将受保护或私有的属
20 性保护起来不被外部批改。
21
22 4、__get(¥n){return ¥this->¥n;} 读办法
23 5、__set(¥n,¥v){¥this->¥n=¥v;} 写办法
24
25/
26class People{
27 private ¥name;
28 private ¥age;
29 private ¥sex;
30
31 //机关函数
32 function __construct(¥name,¥age=18,¥sex=男){
33 ¥this -> name = ¥name;
34 ¥this -> age = ¥age;
35 ¥this -> sex = ¥sex;
36 echo ¥this -> show();
37 }
38
39 //析构函数
40 function __destruct(){
41 //echo {¥this->name}被开释了!;
42 }
43
44 //读属性
45 function __get(¥n){
46 if(¥n == name){
47 return ¥this -> ¥n;
48 }
49 }
50
51 //写属性
52 function __set(¥n,¥v){
53 if(¥n == name){
54 ¥this -> ¥n = ¥v;
55 }
56 }
57
58 public function show(){
59 return 恭喜你!创建{¥this->name}对象成功!;
60 }
61}
62
63/
64 持续
65 1、应用关键字extends
66 2、被持续的类叫做:父类(基类)
67 3、持续的类叫做:子类(派生类)
68 4、单一持续
69 5、具有传递性,即:父类有的,子类也会有
70 6、子类的封装关键字级别不克不及低于父类
71 7、父类机关函数也会被持续
72 8、重载
73/
74class Stu extends People{
75
76
77 public function show(){
78 return parent::show().O(∩_∩)O哈哈~;
79 }
80}
81¥stu = new Stu(张三);
82echo ¥stu -> name;
83?>
抽象类: [url=http://www.t00ls.net/#viewSource]链接标识表记标帜预览源代码[/url] [url=http://www.t00ls.net/#printSource]链接标识表记标帜打印[/url][url=http://www.t00ls.net/#about]链接标识表记标帜关于[/url]01<?php 
02/
03 抽象类
04 1、应用abstract关键字润饰的类叫抽象类,类中至少有一个抽象办法,
05 可以有具体办法。
06 2、抽象类不克不及被实例化,不克不及被锁(final润饰),只能被持续
07 3、抽象类必须由其子类实现它的抽象办法(除非子类也具有抽象性)
08/
09abstract class Animal{
10 protected ¥name;
11 protected ¥age;
12 protected ¥weight;
13
14 abstract function __construct();
15
16 abstract function eat(¥name);
17
18 abstract function sleep();
19
20 static function show(¥what){
21 return 我是{¥what->name}!;
22 }
23}
24
25//Dog类
26class Dog extends Animal{
27 function __construct(¥name,¥age,¥weight){
28 ¥this -> name = ¥name;
29 ¥this -> age = ¥age;
30 ¥this -> weight = ¥weight;
31 }
32
33 function eat(¥n){
34 return ¥this->name.在吃.¥n;
35 }
36
37 function sleep(){
38 return ¥this->name.睡的正酣!;
39 }
40
41 function wangwang(){
42 return 汪汪叫!!!;
43 }
44}
45
46//Cat类
47class Cat extends Animal{
48 function __construct(¥name,¥age,¥weight){
49 ¥this -> name = ¥name;
50 ¥this -> age = ¥age;
51 ¥this -> weight = ¥weight;
52 echo ¥this->miaomiao();
53 }
54
55 function eat(¥n){
56 return ¥this->name.在吃.¥n;
57 }
58
59 function sleep(){
60 return ¥this->name.睡的正酣!;
61 }
62
63 function miaomiao(){
64 return 喵喵叫!!!;
65 }
66}
67
68¥dog = new Dog(旺财,4,10kg);
69echo ¥dog->sleep();
70echo ;
71¥cat = new Cat(龙猫,2,5kg);
72echo ;
73echo ¥cat->sleep();
74echo ;
75echo Animal::show(¥dog);
76echo ;
77echo Animal::show(¥cat);
78?>
接口: [url=http://www.t00ls.net/#viewSource]链接标识表记标帜预览源代码[/url] [url=http://www.t00ls.net/#printSource]链接标识表记标帜打印[/url][url=http://www.t00ls.net/#about]链接标识表记标帜关于[/url]01<?php 
02interface IUsb{
03 const name1=3.0接口;
04 function type1(¥what);
05 function power1();
06}
07
08interface IApi{
09 const name2=扩大插槽;
10 function type2();
11 function power2();
12}
13
14class Pc implements IUsb,IApi{
15
16 function type1(¥what){
17 if(¥what == IUsb::name1){
18 return IUsb::name1.¥this->power1();
19 }
20 else{
21 return 接口不合错误,无法应用!;
22 }
23 }
24
25 function power1(){
26 return 接口正确,电源开启中...;
27 }
28
29 function type2(){}
30
31 function power2(){}
32}
33
34class Mp3 implements IUsb{
35 public ¥name = IUsb::name1;
36 function type1(¥s){}
37 function power1(){}
38}
39¥p = new Pc();
40¥mp3 = new Mp3();
41echo ¥p -> type1(¥mp3->name);
42?>
对大师的php进修有所帮助,呵呵,反正这几天我重温面向对象收成很多,也提示广大同窗,温故而知新!!!!




