ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:145.18KB ,
资源ID:3779207      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3779207.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PHP面向对象继承详解.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PHP面向对象继承详解.docx

1、PHP面向对象继承详解PHP继承定义两个类:class Book public $goods_name; public $goods_price; public $author; public $publisher;class Phone public $goods_price; public $goods_name; public $brand; public $mode;书与电话有共同的属性,可以提取class Goods public $goods_name; public $goods_price;因此在书类与电话类中这两个属性可以不用写,但书与电话类中就已经没有了这两个属性于是就用到

2、了继承:继承定义:如果一个对象A,使用了另一个对象B的成员,那么我们就称A对象继承了B对象示例:class Goods public $goods_name;public $goods_price;class Book extends Goods public $author;public $publisher;$b = new Book;var_dump($b);输出结果为:object(Book)#1 (4) "author"=> NULL "publisher"=> NULL "goods_name"=> NU

3、LL "goods_price"=> NULL 语法:使用关键字:extends 让一个类继承自另一个类TIPS :继承概念体现在对象上,语法体现在类上此时,特定的称谓:以上的示例中:Goods:称类为父类,基础类Book:称为子类,扩展类语法意义就是面向对象中的代码重用!单继承指的是,一个类,只能存在一个父类(基础类),不能同时继承多个类下面的这种继承就是错误的:class StoreBook extends Goods,Book public $age = 3;instanceof,是否是某类实例体现:一个对象如果是子类的实例,同时也是父类的实例!(实例,通过该类

4、实例化的对象)重写,是个现象!class Goods public $goods_name = ginvip; public $goods_price;class Book extends Goods public $goods_name = gin-php; public $author; public $publisher;$b1 = new Book;var_dump($b1);输出结果为:object(Book)#1 (4) "goods_name"=> string(13) "gin-php" "author"=>

5、; NULL "publisher"=> NULL "goods_price"=> NULL 如果子类与父类出现同名的成员(属性方法),则在实例化子类对象时,只会得到子类中定义的成员,称之为重写!方法也可以重写:class Goods public $goods_name = ginvip; public $goods_price; public function SayPrice() echo $this->goods_price; class Book extends Goods public $goods_name = gin-p

6、hp; public $author; public $publisher; public function SayPrice() echo &,$this->goods_price; $b1 = new Book;$b1->goods_price = 1234.15;$b1->SayPrice();输出结果为:&1234.15一旦重写,父类的代码就不会执行!但是,有些方法是一定会重写的,典型的是构造方法:class Goods public $goods_name = ginvip; public $goods_price; public function

7、_construct($name,$price) $this->goods_name = $name; $this->goods_price = $price; class Book extends Goods public $goods_name = gin-php; public $author; public $publisher; public function _construct($author,$publisher) $this->author = $author; $this->publisher = $publisher; $b1 = new Book

8、(Bruce Lee,ginvip,PHP,1234.56);echo <pre>var_dump($b1);echo </pre>输出结果为:object(Book)#1(4)"goods_name"=>string(13)"gin-php""author"=>string(9)"BruceLee""publisher"=>string(6)"ginvip""goods_price"=>NULL怎样才能调用

9、父类的构造方法呢?parent,父类parent关键字,表示父类的意思!用于在当前类中,强制调用父类成员!典型的做法:将参数传递到子类的构造方法中,再在子类中,强制使用 parent 关键字调用父类的构造方法class Goods public $goods_name = ginvip; public $goods_price; public function _construct($name,$price) $this->goods_name = $name; $this->goods_price = $price; class Book extends Goods public

10、 $goods_name = gin-php; public $author; public $publisher; public function _construct($author,$publisher,$name,$price) /父类构造方法 parent:_construct($name,$price); $this->author = $author; $this->publisher = $publisher; $b1 = new Book(Bruce Lee,ginvip,PHP,1234.56);echo <pre>var_dump($b1);ech

11、o </pre>输出结果为:object(Book)#1(4)"goods_name"=>string(3)"PHP""author"=>string(9)"BruceLee""publisher"=>string(6)"ginvip""goods_price"=>float(1234.56)注意:self , parent , $this 的区别self: 当前类本身parent: 当前父类$this-> 当前对

12、象$this 的确定:看上面的parent,或者父类名与:“只有在使用对象调用非静态方法时,才可以使用$this静态方法,无论如何也不能对$this做处理而非静态方法,只有确定了对象,才能确定$this的值!”$this 确定的基本原因:1:哪个对象调用方法,方法内的 $this 就是那个对象2:对象环境,是可以向下传递的 如果当前方法内,已经确定了对象环境,在该方法内,如果出现了静态调用非静态方法,那此时,当前的对象环境,会传递到被静态调用的非静态方法中面试题:$this 永远代表所在的类对象么? 答:不是访问修饰限定符:public , protected , privatepublic:

13、公共的protected:保护的private:私有的用于描述一个成员(属性,方法)在哪里才能被访问的!注意:PHP是采用类的概念,进行成员的限制访问的PHP将访问的代码分成三大区域:类内,类外,继承链上类内是根据:成员在哪里定义与成员在哪里访问来决定类内,类外还是继承链上类内以属性 $property 为例:示例代码:class A public function in_a_func() var_dump($this->property); /在A类中,父类中(继承链)访问 class B extends A /成员定义在B类 public $property = public pro

14、perty; public function in_b_func() var_dump($this->property); /在本类内访问 class C extends B public function in_c_func() var_dump($this->property); /在C类内访问,在子类(继承链)上访问 /$property 成员定义在B类$c = new C;var_dump($c->property);$c->in_c_func();$c->in_b_func();$c->in_a_func();public公共的,指的是,成员在本类

15、内,继承链上的类内,与类外都可以被访问protected保护的,指的是,成员在本类内,继承链上的类内,可以被访问private私有的,指的是,只有本类内,可以访问如何选择:一个原则,尽量体现封装性。封装性,指的是,尽量隐藏内部实现,而仅仅开放外部操作接口!语法上,就是将不需要外部使用的属性,方法,都私有化(保护化),而仅仅留下一些必要的公共方法!注意:1:重写的问题,一定要先明确访问的究竟是哪里所定义的2:私有成员的重写问题私有成员不能被重写。意味着,在相应的私有属性定义的类中,才能访问到相应的私有属性!如:class B public $public_p = in B public; pro

16、tected $protected_p = in B public; private $property = in B protected property<hr /> public function in_b_func() var_dump($this->property); class C extends B public $public_p = in C public; protected $protected_p = in C public; private $property = in C protected property<hr /> public

17、function in_c_func() var_dump($this->property); $o = new C;var_dump($o);以上代码输出的结果为:object(C)#1 (4) "public_p"=>string(11) "in C public""protected_p":protected=>string(11) "in C public""property":"C":private=>string(29) "in

18、C protected property<hr />""property":"B":private=>string(29) "in B protected property<hr />"注意:在处理私有属性时,一定要确定其定义位置!建议是:如果需要通过继承,就使用保护的,少用私有的! 在没有继承时,尽量使用私有的3:在重写时,如果重写成员的访问级别不一致 子类的级别比父类的级别,相等或者弱,可以 子类的级别比父类的级别,强,不可以如:class A protected function f1()

19、 echo in A f1; class B extends A private function f1() echo in B f1; $o = new B;$o->f1();输出结果为:4:兼容性的问题早先的 php 的面向对象不完善,没有访问控制!那时在声明属性时,使用 var 关键字,声明方法时,什么都不使用,直接 function .为了兼容,上面的做法还是可以使用!var , functon 的访问权限,都是 public因此,以下两段代码是一样的:class C var $name; function f1() class D public $name; public function f1()

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1