




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——PHP面向对象三大特点学习PHP面向对象三大特点学习
PHP面向对象三大特点学习学习目标:充分理解抽象、封装、继承、多态。跟随我一起去了解下!
面象对向的三大特点:封装性、继承性、多态性首先简朴理解一下抽象:
我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和行为提取出来,形成一个物理模型(模版),这种研究问题的方法称为抽象
一、封装性
封装就是把抽取出来的数据和对数据的操作封装在一起,数据被养护在内部,程序的其他片面只有被授权的操作(方法)才能对数据举行操作。
php供给了三种访问操纵修饰符
public表示全局,本类内部,类外部,子类都可以访问
protected表示受养护的,只有本类或子类可以访问
private表示私有的,只有本类内部可以访问
以上三种修饰符既可以修饰方法也可以修饰属性(变量),方法假设没有访问修饰符那么默认是public,成员属性务必指定访问修饰符,在PHP4中也有这种写法var$name,表示公开属性,不推举这种写法
例:
复制代码代码如下:
?php
classPerson
public$name;
protected$age;
private$salary;
function__construct$name,$age,$salary
$this-name=$name;
$this-age=$age;
$this-salary=$salary;
publicfunctionshowinfo
//这表示三个修饰符都可以在本类内部使用
echo$this-name.||.$this-age.||.$this-salary;
$p1=newPerson张三,20,3000;
//这里属于类外部,那么假设用下面的方法访问age和salary都会报错
//echo$p1-age;echo$p1-salary;
?
那么现在就想在外部访问protected和private的元素和方法该怎么办?通常做法是通过public函数去访问这些变量格式:
publicfunctionsetxxxx$val
$this-xxxx=$val;
publicfunctiongetxxxx
return$this-xxxx;
这里带set和get只是为了识别便当,并非必要
如:
publicfunctiongetsalary
return$this-salary;//扩展:这里可以调用一些方法,如判断用户名等,正确才给访问
在外部就可以通过echo$p1-getsalary;
假设要访问protected和private也可以使用以下方法,但不推举使用,只要了解即可
__set和__get
__set对protected或private属性举行赋值操作
__set$name,$val;
__get获取protected或private的.值
__get$name;
如:
复制代码代码如下:
?php
classtesta
protected$name;
//使用__set来管理全体属性
publicfunction__set$pro_name,$pro_val
//上面$pro_name和$pro_val可自定义
//下面$this-pro_name为既定,不成更改
$this-pro_name=$pro_val;
//使用__get来获取全体属性值
publicfunction__get$pro_name
ifisset$pro_name
return$this-pro_name;
else
returnnull;
$n1=newtesta;
//正常处境,类外部是不能访问protected属性的,但是用了上面的方法就可以对它们举行操作
$n1-name=小三;
echo$n1-name;
?
//以上代码看懂就行,不推举使用
二、继承性
先看一个例子:
复制代码代码如下:
?php
classPupil
public$name;
protected$age;
publicfunctiongetinfo
echo$this-name.||.$this-age;
publicfunctiontesting
echothisispupil;
classGraduate
PHP面向对象三大特点学习
public$name;
protected$age;
publicfunctiongetinfo
echo$this-name.||.$this-age;
publicfunctiontesting
echothisisGraduate;
?
从上面的例子可以看出,当多个类有好多共同属性和方法时,代码的复用性不高,代码冗余,斟酌css中的处理方法
解决方法:继承
复制代码代码如下:
?php
classStudents
public$name;
public$age;
publicfunction__construct$name,$age
$this-name=$name;
$this-age=$age;
publicfunctionshowinfo
echo$this-name.||.$this-age;
classPupilextendsStudents
functiontesting
echoPupil.$this-name.istesting;
classGraduateextendsStudents
functiontesting
echoGraduate.$this-name.istesting;
$stu1=newPupil张三,20;
$stu1-showinfo;
echobr/;
$stu1-testing;
?
从上面可以看出,继承就是一个子类Subclass通过extends父类把父类BaseClass中的public和protected的属性和方法持续下来,不能继承private属性和方法
语法布局:
class父类名
class子类名extends父类名
细节:
1、一个子类只能继承一个父类(这里指直接继承);假设梦想继承多个类的属性和方法,可以使用多层继承
例:
复制代码代码如下:
?php
classA
public$name=AAA;
classBextendsA
public$age=30;
classCextendsB
$p=newC;
echo$p-name;//这里会输出AAA
?
2、在创造某个子类对象时,默认处境下不会自动调用其父类的构造函数
例:
classA
publicfunction__construct
echoA;
classBextendsA
publicfunction__construct
echoB;
$b=newB;//这里会优先输出B中的构造方法,假设B中没有构造方法才会输出A中的
3、在子类中假设需要访问父类的方法(构造方法、成员方法方法的修饰符为protected或private),那么可以使用父类::方法名或者parent::方法名来完成
classA
publicfunctiontest
echoa_test;
PHP面向对象三大特点学习
classBextendsA
publicfunction__construct
//两种方法都行
A::test;
parent::test;
$b=newB;
5、假设一个子类派生类的方法与父类的方法完全一样时public,protected,我们称为方法笼罩或方法重写(override),看下面的多态性
三、多态性
例:
复制代码代码如下:
?php
classAnimal
public$name;
public$price;
functioncry
echoidon\tknow;
classDogextendsAnimal
//笼罩、重写
functioncry
echoWangWang!;
Animal::cry;//这里不会报错,能正确执行父类的cry;
$dog1=newDog;
$dog1-cry;
?
小结:
1、当一个父类知道全体的子类都有一个方法,但是父类不能确定该方法如何写,可以让子类去笼罩它的方法,方法笼罩重写,务必要求子类的方法名和参数个数完全一致
2、假设子类要去调用父类的某个方法protected/public,可以使用父类名::方法名或者parent::方法名
3、在实现方法重写的时候,访问修饰符可以不一样,但是子类方法的访问权限务必大于等于父类方法的访问权限(即不能缩小父类方法的访问权限)
如父类publicfunctioncry子类protectedfunctioncry那么会报错
但是子类的访问权限可以放大,如:
父类privatefunctioncry子类protectedfunc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 滥用与规制:我国社保基金的监管缺失及其补救
- 餐饮集团厨师团队招聘合同
- 车辆抵押车辆维修保养合同
- 车祸受害者医疗救治费用补偿协议
- 活动策划现场总监聘请合同范本
- 农业观光园菜园承包种植与销售协议
- 餐饮企业局部股权置换与品牌授权使用合同
- 出口贸易融资风险防范与监控合同
- 公共交通枢纽地下车库使用权转让协议
- 智能停车场场外建设合同
- 2025广西桂盛金融信息科技服务有限公司专业技术人员常态化招聘笔试参考题库附带答案详解-1
- 2025至2030中国RPA(机器人流程自动化)市场规模体量及趋势前景研究报告
- 2025年四川省成都市成华区中考二诊英语试题(原卷版+解析版)
- 2025年高考化学考试易错题易错类型09物质结构与性质(7大易错点)(学生版+解析)
- 南方Cass入门培训
- 酒店前厅礼宾培训
- 双方承接工程协议书
- 疫苗管理法的解读与实施
- 心肺复苏操作2025版
- 学术规范与科研诚信建设
- 人类精子库库存管理面临的问题及解决策略
评论
0/150
提交评论