PHP对象之抽象和接口(传智播客听课笔记韩顺平).doc_第1页
PHP对象之抽象和接口(传智播客听课笔记韩顺平).doc_第2页
PHP对象之抽象和接口(传智播客听课笔记韩顺平).doc_第3页
PHP对象之抽象和接口(传智播客听课笔记韩顺平).doc_第4页
PHP对象之抽象和接口(传智播客听课笔记韩顺平).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

u 抽象类一个小问题?为什么设计抽象类这个技术?1. 在我们实际开发中,我们可能有这样一种类,是其它类的父类,但它本身并不需要被实例化,主要用途是用于让子类来继承,这样可以达到代码复用,同时利于项目设计者设计类快速入门abstract class Animalpublic $name;protected $price;/这个方法不有方法体,这个方法主要是为了让子类去实现abstract function cry();class Dog extends Animal/覆盖function cry()echo 小狗汪汪叫;/创建一个子类实例$dog1=new Dog();$dog1-cry();使用抽象类的注意事项1. 基本用法Abstract class 类名/方法/属性2. 用abstract关键字来修饰一个类时,这个类就叫抽象类3. 用abstract关键字来修饰一个方法,这个方法就叫抽象方法,这里抽象方法就不能有方法体4. 抽象类不能被实例化5. 抽象类不一定要包含abstract方法,同时还可以有实现了的方法6. 一旦类包含了abstract方法,则这个类必须声明为abstract7. 抽象方法不能包含函数体8. 如果一个类继承了某个抽象类,则它必须实现该抽象类的所有抽象方法u 接口快速入门案例start();$camera1-stop();$phone1=new Phone();$phone1-start();$phone1-stop();?1. 接口的使用基本语法Interface 接口名/属性/方法 接口中方法都不能有方法体,都是抽象方法2. 如何去实现这个接口Class 类名 implements 接口名1,接口2.。3. 接口的作用就是声明一些方法,供其它类来实现,接口还体现了编程中我们希望的效果高内聚低耦合的特点u 深入讨论接口:interface什么情况下可以考虑使用接口1. 定规范2. 定下规范,让其他的程序员来实现/项目经理 /学生管理系统(students)/定义接口interface StuManageInterfacepublic function addStudent();public function delStudent();public function updStudent();/给张三class StuManage implements StuManageInterface3. 当多个类,他们之间是平级的关系,这些类都要去实现某个功能,只是实现的方式不一样u 接口的细节问题1. 不能去实例化一个接口2. 接口中的所有方法都不能有方法体3. 一个类可以实现多个接口,但要用逗号隔开4. 接口在可以有属性,但必须是常量,默认是publicinterface iUsbconst A=90;echo Ok;echo iUsb:A;5. 接口的方法必须都是 public ,默认是public6. 一个接口不能继承其它的类,但是可以继承别的接口类和接口关系一图interface iUsb2public function a();interface iUsb3public function b();interface iUsb extends iUsb2,iUsb3const A=90;function test();class Class1 implements iUsbpublic function a()public function b()public function test()echo Ok;echo iUsb:A;从上面我们看出 一个接口可以继承一个或多个其他接口 当一个类去实现某些接口,则必须把所被继承下来的方法都实现u 继承和实现接口的比较1. 可以认为,实现接口是对单一继承的补充2. 可以在不破坏类层级关系的前提下,对某个类功能扩展class Monkeypublic $name;public $age;public function climbing()echo 猴子会爬树;interface iBirdablepublic function fly();interface iFishablepublic function swimming();class LittleMonkey extends Monkey implements iBirdable,iFishablepublic function fly()echo 猴子会飞;public function swimming()echo 猴子会游泳;$littleMonkey1=new LittleMonkey();$littleMonkey1-climbing();$littleMonkey1-fly();$littleMonkey1-swimming();u Final关键字1. 如果我们希望有一个类,不被任何子类继承(可能因为安全考虑),可以使用finalfinal class Aclass B extends Aecho ok;2. 如果我们希望某个方法,比如计算个人所得税的方法,不被任何的子类重写,可以使用final来修饰方法class Afinal public function getRate($salary)/ return $salary*0.08;class B extends A /不能去覆盖父类的方法 /*public function getRate($salary)return $salary*0.01;*/$b=new B();echo $b-getRate(100);3. Final关键字不能去修饰属性4. final方法可以被继承,但不能被修改u const关键字基本用法:const 常量名=值;常量访问:类名:常量名; 或 接口名:常量名;内部外部都可访问常量名应全部大写,并且前面不用$常量是public类型的常量在定义的时候必须给初值Const关键字前面不要带修饰符一个常量是属于某个类的,不属于某个对象快速入门:Class AConst 常量名=初值;Interface 接口名Const 常量名=初值;class Aconst TAX_RATE=0.08;public

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论