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 相关文章推荐
扩展你的 PHP 之入门篇
Dec 04 PHP
用PHP编写和读取XML的几种方式
Jan 12 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
thinkphp实现多语言功能(语言包)
Mar 04 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
PHP实现微信小程序用户授权的工具类示例
Mar 05 PHP
详解PHP队列的实现
Mar 14 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
简单的php购物车代码
Jun 05 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中的cookie
2006/11/26 PHP
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
python django集成cas验证系统
2014/07/14 Python
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Django中URLconf和include()的协同工作方法
2015/07/20 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
初中生自我评价
2014/02/01 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
重阳节简报
2015/07/20 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
MySQL批量更新不同表中的数据
2022/05/11 MySQL