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连接Oracle数据库
Oct 09 PHP
PHP 实用代码收集
Jan 22 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
php中session与cookie的比较
Jan 27 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
php判断linux下程序问题实例
Jul 09 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 PHP
PHP PDOStatement::fetch讲解
Jan 31 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 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 mssql 时间格式问题
2009/01/13 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
arguments对象
2006/11/20 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
解决vue点击控制单个样式的问题
2018/09/05 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
js实现随机点名程序
2020/09/17 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
Python标准库之Sys模块使用详解
2015/05/23 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
pandas数值计算与排序方法
2018/04/12 Python
Python函数参数操作详解
2018/08/03 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
销售辞职报告范文
2014/01/12 职场文书
眼镜促销方案
2014/03/15 职场文书
元旦晚会主持词
2014/03/24 职场文书
联谊活动总结范文
2015/05/09 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
golang在GRPC中设置client的超时时间
2021/04/27 Golang
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫