PHP面向对象程序设计继承用法简单示例


Posted in PHP onDecember 28, 2018

本文实例讲述了PHP面向对象程序设计继承用法。分享给大家供大家参考,具体如下:

<?php
//继承是子类(派生类)从父类(基类,超类)继承属性和方法。
//子类也可以有自己的属性和方法。
//一个父类可以被多个子类继承。
//如果想修改父类的方法,只能在子类里重写这个方法,这也是多态的体现。
//用if($obj instanceof SomeClass){}来检查一个对象是否属于一个类。
//如果$name是protected,private访问权限,那么将不能在类外被直接访问。
//如果$name是private访问权限,那么将只能在自身类里访问。
//如果$name是protected访问权限,可以自身类里访问,也可以在子类里访问。
//__construct()是类的构造函数,在创建对象实例时,自动访问该函数,子类也有自己的构造函数。
//子类没有构造函数时,在创建对象时,会调用父类的构造函数。
//子类有构造函数时,不用在调用父类的构造函数,除非有parent显式调用时,才去调用父类的构造函数。
//程序结束时,或者用unset()对象时,会调用析构函数。
//如果类里定义了final的方法,那么此方法将不能被子类重写。
//如果类声明了final,那么此类不能被继承。
//作为惯例,私有的变量名通常以一个下划线开始。
//如果一个类的方法只能被它自己调用,那么可以设置为受保护的或者私有的。
//$this引用当前对象的实例,self被用作当前类的一个引用。
//静态属性和类常数只能用类名、parent、self来访问
//函数名不区分大小写,变量区分大小写。
class Employees{
  protected $name = null;
  public static $count = 0;
  function __construct($nameStr){
    $this->name = $nameStr;
    echo "<p>$this->name : ",self::$count," : parent : __construct</p>";
  }
  function work(){
    echo "<p>$this->name is working</p>";
  }
  
  function __destruct(){
    echo "<p>parent unset $this->name</p>";
  }
}
class Managers extends Employees{
  private $pos = null;
  function __construct($p,$nameStr){
    parent::$count++;
    parent::__construct($nameStr);
    $this->pos = $p;
    echo "<p>$this->name , $this->pos : self : __construct</p>";
  }
  function assignJob(){
    echo "<p>$this->name assign jobs</p>";
  }
  function getName(){
    return $this->name;
  }
  function __destruct(){
    echo "<p>self unset $this->name</p>";
  }
}
class Programmers extends Employees{
  function code(){
    echo "<p>$this->name is coding</p>";
  }
  function getName(){
    return $this->name;
  }
}
$e1 = new Employees('e1');
$e2 = new MAnagers(2,'e2');
$e3 = new Programmers('e3');
$e1->work();
$e2->work();
$e3->work();
$e2->assignJob();
$e3->Code();
echo "<p>{$e3->getName()}</p>";
//echo "<p>$e1->name</p>";
if($e2 instanceof Employees){
  echo "<p>ok</p>";
}else{
  echo "<p>no</p>";
}
unset($e1,$e2,$e3);

运行结果:

e1 : 0 : parent : __construct

e2 : 1 : parent : __construct

e2 , 2 : self : __construct

e3 : 1 : parent : __construct

e1 is working

e2 is working

e3 is working

e2 assign jobs

e3 is coding

e3

ok

parent unset e1

self unset e2

parent unset e3

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
Oct 09 PHP
PHP学习笔记之数组篇
Jun 28 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
PHP 安全检测代码片段(分享)
Jul 05 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
php生成圆角图片的方法
Apr 07 PHP
微信公众平台开发实现2048游戏的方法
Apr 15 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 PHP
PHP抽象类基本用法示例
Dec 28 #PHP
php PDO属性设置与操作方法分析
Dec 27 #PHP
php实现的PDO异常处理操作分析
Dec 27 #PHP
CI框架网页缓存简单用法分析
Dec 26 #PHP
CI框架附属类用法分析
Dec 26 #PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 #PHP
CI框架实现创建自定义类库的方法
Dec 25 #PHP
You might like
解析yii数据库的增删查改
2013/06/20 PHP
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
php post换行的方法
2020/02/03 PHP
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
python实现封装得到virustotal扫描结果
2014/10/05 Python
python rsa 加密解密
2017/03/20 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
python 如何调用远程接口
2020/09/11 Python
《槐乡五月》教学反思
2014/04/25 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
销售助理岗位职责
2015/02/11 职场文书
单身证明范本
2015/06/15 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang