PHP类的封装与继承详解


Posted in PHP onSeptember 29, 2015

封装

       把成员方法和成员属性封装到类中,隐藏属性和方法实现的细节,通过public、protected、private等限定类成员的访问权限,数据被保护在内部,只通过被授权的成员方法才可以操作,尽可能的对成员进行封装。

public:方法或者属性在任何作用域下都可以访问到,而且是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public。
protected:本类和子类可以访问,外部对象不可以调用。
private:只能在本类访问,子类与外部对象都不可能调用。经过private标记的方法或者属性可以在继承类中重新定义,每一个类只能看到它自己定义的私有方法。

       这三个修饰符从作用范围上来讲应该像这样从大到小排序:public→protected→private之所以说是在作用范围上,是因为类把一些属性和方法进行了封装,这个封装就决定了数据的“可见性”,这样我们在类的外面不能够随意修改所定义的属性和方法而只能够进行调用,这就是封装的好处,同时也提高了安全性。
我们给出代码示例: 

class myClass{ 
  public $public="Public";    //public属性
  protected $protected="Protected"; //protected属性
  private $private="Private";   //private 属性
  function say_Hello() {    //public属性 
  //只是举例说明,自行添加内容
  } 
 
 $obj=new myClass(); 
 echo $obj->public; 
 //echo $obj->protected; 
 //echo $obj->private;

通过运行以上示例我们得到一个“Public”,但当你把//echo $obj->private;的注释去掉时,你会得到一下如下的错误:

Fatal error: Cannot access protected property myClass::$protected in E:apachehtdocsexamplefile.php on line 13。

可以看到我们不能随意去访问类的属性定义,我们在“外面”是不知道这个类中到底有那些成员,因为这些成员对于其他的类可能是不可的。当然如果我们一定要访问或者修改定义为“私有”的属性时,也可以使用PHP所提供的系统方法:_get()和_set()。 

继承

       可以使一个类继承并拥有另一个已经存在类的成员属性和方法,被继承的类称为父类或基类,继承类为子类。通过extends关键字实现继承关系。通俗来说,要有继承就得有一个“根源”,这“根源”你可能想像你以后生了儿子或者女儿,他们会从你这里得到一些“东西(属性和方法)”,这样你的“后代”就是持有你(根源)所有的一些特征了。

产生“根源”类(父类或者基类)
语法:class father{
}

产生“后代”(子类)
语法:class son extends father{
}

PHP extends类继承示例代码:

class father{ 
 protected $name; 
 function __construct($name){  //构造函数 
  $this->name=$name; 
 } 
 
 function work(){ 
  echo "{$this->name}我在工作;
 } 
 function __destruct(){}  //析构函数
} 
 
class son extends father{  //继承父类
 function play(){ 
  echo "{$this->name}我在玩游戏;
 }  
} 
 
 $my_father=new father(“爸爸”);  //创建父类对象
 $my_father->work(); 

 $my_son=new son(“儿子”); 
 $my_son->work(); 
 $my_son->play();

解析:在父类father里,我们定义了一般的属性和方法,然后定义子类。你可能发现在子类里内是没有构造函数和析构函数的,因为子类是继承了父类的所有方法,所以可以调用$my_son->work(); 这就是PHP类的继承了。另外要注意:PHP不能多层继承,如:class A extends B extends C,这样的继承在PHP中是无效的,PHP里只有单继承,不能多继承,需要其他办法变相“实现”多继承。

以上就是关于PHP类的封装与继承学习内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
php过滤危险html代码
Aug 18 PHP
php 静态化实现代码
Mar 20 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
Apr 11 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
Jan 06 PHP
一个简洁的PHP可逆加密函数(分享)
Jun 06 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
Jun 24 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
May 16 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 09 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 PHP
PHP比较运算符的详细介绍
Sep 29 #PHP
php提高网站效率的技巧
Sep 29 #PHP
四个PHP非常实用的功能
Sep 29 #PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 #PHP
PHP+AJAX实现投票功能的方法
Sep 28 #PHP
WIFI万能钥匙密码查询接口实例
Sep 28 #PHP
百万级别知乎用户数据抓取与分析之PHP开发
Sep 28 #PHP
You might like
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
Javascript 二维数组
2009/11/26 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
js实现一键复制功能
2017/03/16 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
多版本Python共存的配置方法
2017/05/22 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
Python可迭代对象操作示例
2019/05/07 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
C#公司笔试题
2014/03/28 面试题
文明礼仪小标兵事迹
2014/01/12 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
副处级干部考察材料
2014/05/17 职场文书
法语专业求职信
2014/07/20 职场文书
2015年妇女工作总结
2015/05/14 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python