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 09 PHP
目录,文件操作详谈―PHP
Nov 25 PHP
PHP中的cookie
Nov 26 PHP
ADODB的数据库封包程序库
Dec 31 PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 PHP
PHP中file_exists()判断中文文件名无效的解决方法
Nov 12 PHP
帝国CMS留言板回复后发送EMAIL通知客户
Jul 06 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
Feb 04 PHP
Laravel框架实现调用百度翻译API功能示例
May 30 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 PHP
TP5框架实现签到功能的方法分析
Apr 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中根据变量的类型 选择echo或dump
2012/07/05 PHP
php+mysql数据库查询实例
2015/01/21 PHP
php日期操作技巧小结
2016/06/25 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
python安装以及IDE的配置教程
2015/04/29 Python
深入理解python中的atexit模块
2017/03/07 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
介绍一下JNDI的基本概念
2013/07/26 面试题
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
基层工作经验证明样本
2014/11/16 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS