php面向对象之抽象类、接口_第1页
php面向对象之抽象类、接口_第2页
php面向对象之抽象类、接口_第3页
php面向对象之抽象类、接口_第4页
php面向对象之抽象类、接口_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、php 面向对象之抽象类、接口抽象类为什么设计抽象类这个技术?1. 在实际开发中,我们可能有这样一种类 ,是其它类的父类,但是它本身并不需要实例化 ,主要用途是用于让子类来继承,这样可以到达代码复用 . 同时利于项目设计者,设计类 ./在实现方法覆盖的时候,访问修饰符可以不一样/但是必须满足 : 子类的访问范围 =父类的访问范围abstract class Animalpublic $name;protected $age;/这个方法没有方法体 ,这个方法主要是为了让子类去实现.abstract public function cry();class Cat extends Animalpub

2、licfunction cry()echo 猫猫叫唤 .;/创建一个子类实例$cat1=new Cat();$cat1-cry();使用抽象类的注意事项 :1. 基本用法abstract class 类名 /方法 /属性 2. 如果一个类使用 abstract 来修饰,则该类就是抽象类 , 如果一个方法被abstract 修饰,则该方法就是抽象方法【抽象方法就不能有方法体 .】3. 抽象类可以没有抽象方法 .同时还可以有实现了的方法 .=父类的访问范围abstract class Animalpublic $name=abc;protected $age;/这个方法没有方法体 ,这个方法主要是

3、为了让子类去实现.abstract public function cry();public function getName()return $this-name;class Cat extends Animalpublicfunction cry()echo 猫猫叫唤 .;/创建一个子类实例$cat1=new Cat();$cat1-cry();echo $cat1-getName();4. 如果一个类中,只要有抽象方法,则该类必须声明为abstractabstract class Aabstract function test();echo ok;5. 如果 A 类继承了一个抽象类B,则

4、要求 A 类实现从 B 类继承的所有抽象方法案例 :/这是一个抽象类abstract class Aabstract function test();/B 类要么自己抽象,或者实现从A 类继承的抽象方法 .class B extends Afunction test()echo 我实现 A:test();echo hello;接口start();$camera1-stop();echo ;/手机对象$phone1=new Phone();$phone1-start();$phone1-stop();?1. 接口的使用基本语法interface 接口名 /属性/方法接口的方法都不能有方法体如何去

5、实现接口class 类名 implements 接口名 1,接口 2.接口它的作用就是 声明一些方法,供其它类来实现 . 接口还体现编程中我们希望的效果 高内聚低耦合 的特点 :深入讨论接口 -interface1.定规范2.定下规范,让别的程序员来实现3.当多个类,他们之间是平级的关系. 这些类都会去实现某个功能,只是实现的方式不一样.接口的细节1. 不能去实例化一个接口interface iUsb$a=new iUsb(); (错误 !)2. 接口中的所有方法,都不能有方法体3. 一个类可以去实现多个接口语法 :class 类名 implements 接口 1,接口 24. 接口中可以有属

6、性 ,但是必须是常量 ,并且是 publicinterface iUsbconst A=90;echo ok.iUsb:A;5. 接口的方法是 public 【默认就是 public 】 ,不能是 protected 和 private举例 :interface iUsb constA=90; functiontest();echo ok.iUsb:A;从上面我们看出 一个接口可以继承多个其它的接口. 当一个类去实现了某些接口,则必须把所有接口的方法,都实现继承和实现接口的比较 :(1) 可以认为实现接口是对单一继承的补充 .(2) 可以在不破坏类层级关系的前提下,对某个类功能扩展 .fina

7、l 关键字如果我们希望某个类不被其它的类来继承 (可能因为安全考虑 .), 可以使用 final如果我们希望某个方法,比如计算个人所得税的方法,不能子类改写,可以使用 fianl 来修饰方法class Afinal public function getRate($salary)return $salary*0.08;class B extends A/不能去覆盖父类的getRate 方法 ./*public function getRate($sal)return $sal*0.01;*/$b=new B();echo $b-getRate(100);final 关键字不能去修饰属性 .const 关键字的讲解/当你有一个属性,不希望被修改,则考虑使用 const 做成常量基本用法是class Aconst 常量名 =赋初值 ;interface 接口名 const 常量名 =赋初值 ;常量是 public使用 类名 :常量名 ; 接

温馨提示

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

评论

0/150

提交评论