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 相关文章推荐
生成缩略图
Oct 09 PHP
php 缩略图实现函数代码
Jun 23 PHP
抓取并下载CSS中所有图片文件的php代码
Sep 26 PHP
PHP 安全检测代码片段(分享)
Jul 05 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
cakephp打印sql语句的方法
Feb 13 PHP
PHP读取XML格式文件的方法总结
Feb 27 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
laravel 字段格式化 modle 字段类型转换方法
Sep 30 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
Jun 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
php 删除记录实现代码
2009/03/12 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
document.all与WEB标准
2020/05/13 Javascript
jquery之Document元素选择器篇
2008/08/14 Javascript
Prototype Array对象 学习
2009/07/19 Javascript
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
如何查看python关键字
2021/01/17 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
申论倡议书范文
2014/05/13 职场文书
留守儿童工作方案
2014/06/02 职场文书
六查六看心得体会
2014/10/14 职场文书
工程承包协议书
2014/10/20 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
防溺水主题班会教案
2015/08/12 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
MySQL 覆盖索引的优点
2021/05/19 MySQL
在Python 中将类对象序列化为JSON
2022/04/06 Python
python 使用pandas读取csv文件的方法
2022/12/24 Python