首页 > 新闻动态 >  

新闻动态
NEWS

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进修有所帮助,呵呵,反正这几天我重温面向对象收成很多,也提示广大同窗,温故而知新!!!!

文艺不是炫耀,不是花哨空洞的文字堆砌,不是一张又一张的逆光照片,不是将旅行的意义转化为名牌包和明信片的物质展示;很多时候它甚至完全不美——它嘶吼、扭曲,它会痛苦地抽搐,它常常无言地沉默。——艾小柯《文艺是一种信仰》
分享到: