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 相关文章推荐
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
Jul 04 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
php简单smarty入门程序实例
Jun 11 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
CI配置多数据库访问的方法
Mar 28 PHP
Paypal实现循环扣款(订阅)功能
Mar 23 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP实现 APP端微信支付功能
Jun 22 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
详细分析PHP7与PHP5区别
Jun 26 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
php self,$this,const,static,-&amp;gt;的使用
2009/10/22 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
html文档中的location对象属性理解及常见的用法
2014/08/13 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
jQuery实现左右切换焦点图
2015/04/03 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
js module大战
2019/04/19 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
Python写的英文字符大小写转换代码示例
2015/03/06 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
Python实现爬取并分析电商评论
2020/06/19 Python
Python configparser模块应用过程解析
2020/08/14 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
.net软件工程师应聘上机试题
2015/03/10 面试题
小班幼儿评语大全
2014/04/30 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
工作作风承诺书
2014/08/30 职场文书
单位介绍信格式
2015/01/31 职场文书
退伍军人感言
2015/08/01 职场文书
应届生个人的求职(自荐信范文2篇)
2019/08/23 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript