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 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
中英文字符串翻转函数
Dec 09 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
PHP操作Memcache实例介绍
Jun 14 PHP
php pki加密技术(openssl)详解
Jul 01 PHP
ThinkPHP模板判断输出Defined标签用法详解
Jun 30 PHP
php事务处理实例详解
Jul 11 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
利用PHP判断文件是否为图片的方法总结
Jan 06 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
Laravel实现短信注册的示例代码
May 29 PHP
Laravel推荐使用的十个辅助函数
May 10 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简单静态页生成过程
2008/03/27 PHP
php smarty函数扩展
2010/03/15 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
JavaScript中的闭包原理分析
2010/03/08 Javascript
一个网马的tips实现分析
2010/11/28 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
js简单抽奖代码
2015/01/16 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
python request 模块详细介绍
2020/11/10 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
药店主任岗位责任制
2014/02/10 职场文书
高中生职业规划范文
2014/03/09 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
看雷锋电影观后感
2015/06/10 职场文书
高中美术教学反思
2016/02/17 职场文书
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS