PHP对象之抽象和接口(精)

上传人:新** 文档编号:463767450 上传时间:2023-02-24 格式:DOCX 页数:10 大小:22.90KB
返回 下载 相关 举报
PHP对象之抽象和接口(精)_第1页
第1页 / 共10页
PHP对象之抽象和接口(精)_第2页
第2页 / 共10页
PHP对象之抽象和接口(精)_第3页
第3页 / 共10页
PHP对象之抽象和接口(精)_第4页
第4页 / 共10页
PHP对象之抽象和接口(精)_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《PHP对象之抽象和接口(精)》由会员分享,可在线阅读,更多相关《PHP对象之抽象和接口(精)(10页珍藏版)》请在金锄头文库上搜索。

1、 抽象类一个小问题?为什么设计抽象类这个技术?1. 在我们实际开发中,我们可能有这样一种类,是其它类的父类,但它本身并 不需要被实例化,主要用途是用于让子类来继承,这样可以达到代码复用,同 时利于项目设计者设计类快速入门abstract class Animalpublic $name;protected $price;/这个方法不有方法体,这个方法主要是为了让子类去实现abstract function cry(;class Dog extends Animal/覆盖function cry(echo 小狗汪汪叫 ;/创建一个子类实例$dog1=new Dog(;$dog1-cry(;使用抽

2、象类的注意事项1. 基本用法Abstract class 类名 /方法/属性2. 用 abstract关键字来修饰一个类时,这个类就叫抽象类3. 用 abstract关键字来修饰一个方法,这个方法就叫抽象方法,这里抽象方法 就不能有方法体4. 抽象类不能被实例化5. 抽象类不一定要包含 abstract方法,同时还可以有实现了的方法6. 一旦类包含了 abstract方法,则这个类必须声明为 abstract7. 抽象方法不能包含函数体8. 如果一个类继承了某个抽象类,则它必须实现该抽象类的所有抽象方法 接口快速入门案例/使用程序模拟现实情况interface iUsbpublic funct

3、ion start(;public function stop(;/ 编写手机类,让它去实现接口/1.当一个类实现了某个接口,则要求该类必须实现这个接口的所有方法class Camera implements iUsbpublic function start(echo 相机开始工作 ;public function stop(echo 相机停止工作 ;/编写手机类class Phone implements iUsb public function start(echo 手机开始工作 ;public function stop(echo 手机停止工作 ;$camera1=new Camera

4、(;$camera1-start(;$camera1-stop(;$phone1=new Phone(;$phone1-start(;$phone1-stop(;?1. 接口的使用基本语法Interface 接口名 /属性/方法接口中方法都不能有方法体,都是抽象方法如何去实现这个接口Class 类名 implements 接口名 1,接口 2.。 3. 接口的作用就是声明一些方法,供其它类来实现,接口还体现了编程中我们 希望的效果 高内聚低耦合的特点深入讨论接口: interface什么情况下可以考虑使用接口1. 定规范2. 定下规范,让其他的程序员来实现/项目经理/学生管理系统 (stude

5、nts/定义接口interface StuManageInterfacepublic function addStudent(;public function delStudent(;public function updStudent(;/给张三class StuManage implements StuManageInterface3. 当多个类,他们之间是平级的关系,这些类都要去实现某个功能,只是实现 的方式不一样接口的细节问题1. 不能去实例化一个接口2. 接口中的所有方法都不能有方法体3. 一个类可以实现多个接口,但要用逗号隔开4. 接口在可以有属性,但必须是常量,默认是 publi

6、cinterface iUsbconst A=90;echo Ok;echo iUsb:A;5. 接口的方法必须都是 public , 默认是 public6. 一个接口不能继承其它的类,但是可以继承别的接口类和接口关系一图interface iUsb2 public function a(; interface iUsb3 public function b(;interface iUsb extends iUsb2,iUsb3const A=90;function test(;class Class1 implements iUsbpublic function a(public func

7、tion b(public function test(echo Ok;echo iUsb:A;从上面我们看出1 一个接口可以继承一个或多个其他接口2 当一个类去实现某些接口,则必须把所被继承下来的方法都实现 继承和实现接口的比较1. 可以认为,实现接口是对单一继承的补充2. 可以在不破坏类层级关系的前提下,对某个类功能扩展class Monkeypublic $name;public $age;public function climbing(echo 猴子会爬树 ;interface iBirdablepublic function fly(;interface iFishablepubl

8、ic function swimming(;class LittleMonkey extends Monkey implements iBirdable,iFishable public function fly(echo 猴子会飞 ;public function swimming(echo 猴子会游泳 ;$littleMonkey1=new LittleMonkey(;$littleMonkey1-climbing(;$littleMonkey1-fly(;$littleMonkey1-swimming(;Final关键字1. 如果我们希望有一个类,不被任何子类继承(可能因为安全考虑),可

9、以使 用 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($salaryreturn $salary*0.01;*/$b=new B(;echo $b-getRate(100;3. Final 关键字不能去修饰属性4

10、. final 方法可以被继承,但不能被修改const关键字基本用法: const 常量名 =值;常量访问:类名:常量名; 或 接口名:常量名;内部外部都可访问常量名应全部大写,并且前面不用 $常量是 public 类型的 常量在定义的时候必须给初值 Const关键字前面不要带修饰符 一个常量是属于某个类的,不属于某个对象 快速入门:Class AConst 常量名 =初值;Interface 接口名 Const 常量名 =初值;class Aconst TAX_RATE=0.08;public function payTax($valreturn $val*A:TAX_RATE;return $val*self:TAX_RATE;$a=new A(;echo $a-payTax(200;PHP 面积编程的综合实例现在开发1. 画出程序框架图2. 编写代码

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号