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函数
Oct 03 PHP
PHP 实用代码收集
Jan 22 PHP
PHP输出时间差函数代码
Jan 28 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
IIS6.0中配置php服务全过程解析
Aug 07 PHP
PHP的拦截器实例分析
Nov 03 PHP
php生成二维码
Aug 10 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
php+ajax 实现输入读取数据库显示匹配信息
Oct 08 PHP
PHP共享内存用法实例分析
Feb 12 PHP
PHP下的浮点运算不准的解决方法
Oct 27 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
php中$this-&amp;gt;含义分析
2009/11/29 PHP
第四章 php数学运算
2011/12/30 PHP
基于PHP编程注意事项的小结
2013/04/27 PHP
php过滤html标记属性类用法实例
2014/09/23 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
Python内置的字符串处理函数整理
2013/01/29 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
pandas取出重复数据的方法
2019/07/04 Python
python 公共方法汇总解析
2019/09/16 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
家长给小学生的评语
2014/01/30 职场文书
优秀党员获奖感言
2014/02/18 职场文书
作风建设整改方案
2014/10/27 职场文书
2014年班干部工作总结
2014/11/25 职场文书
公司搬迁通知
2015/04/20 职场文书
实施意见格式范本
2015/06/05 职场文书
师范生小学见习总结
2015/06/23 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL