• 售前

  • 售后

热门帖子
入门百科

PHP面向对象程序计划继承用法简朴示例

[复制链接]
宇宙无限 显示全部楼层 发表于 2021-10-26 14:05:23 |阅读模式 打印 上一主题 下一主题
本文实例报告了PHP面向对象步伐设计继续用法。分享给各人供各人参考,详细如下:
  1. <?php
  2. //继承是子类(派生类)从父类(基类,超类)继承属性和方法。
  3. //子类也可以有自己的属性和方法。
  4. //一个父类可以被多个子类继承。
  5. //如果想修改父类的方法,只能在子类里重写这个方法,这也是多态的体现。
  6. //用if($obj instanceof SomeClass){}来检查一个对象是否属于一个类。
  7. //如果$name是protected,private访问权限,那么将不能在类外被直接访问。
  8. //如果$name是private访问权限,那么将只能在自身类里访问。
  9. //如果$name是protected访问权限,可以自身类里访问,也可以在子类里访问。
  10. //__construct()是类的构造函数,在创建对象实例时,自动访问该函数,子类也有自己的构造函数。
  11. //子类没有构造函数时,在创建对象时,会调用父类的构造函数。
  12. //子类有构造函数时,不用在调用父类的构造函数,除非有parent显式调用时,才去调用父类的构造函数。
  13. //程序结束时,或者用unset()对象时,会调用析构函数。
  14. //如果类里定义了final的方法,那么此方法将不能被子类重写。
  15. //如果类声明了final,那么此类不能被继承。
  16. //作为惯例,私有的变量名通常以一个下划线开始。
  17. //如果一个类的方法只能被它自己调用,那么可以设置为受保护的或者私有的。
  18. //$this引用当前对象的实例,self被用作当前类的一个引用。
  19. //静态属性和类常数只能用类名、parent、self来访问
  20. //函数名不区分大小写,变量区分大小写。
  21. class Employees{
  22.   protected $name = null;
  23.   public static $count = 0;
  24.   function __construct($nameStr){
  25.     $this->name = $nameStr;
  26.     echo "<p>$this->name : ",self::$count," : parent : __construct</p>";
  27.   }
  28.   function work(){
  29.     echo "<p>$this->name is working</p>";
  30.   }
  31.   
  32.   function __destruct(){
  33.     echo "<p>parent unset $this->name</p>";
  34.   }
  35. }
  36. class Managers extends Employees{
  37.   private $pos = null;
  38.   function __construct($p,$nameStr){
  39.     parent::$count++;
  40.     parent::__construct($nameStr);
  41.     $this->pos = $p;
  42.     echo "<p>$this->name , $this->pos : self : __construct</p>";
  43.   }
  44.   function assignJob(){
  45.     echo "<p>$this->name assign jobs</p>";
  46.   }
  47.   function getName(){
  48.     return $this->name;
  49.   }
  50.   function __destruct(){
  51.     echo "<p>self unset $this->name</p>";
  52.   }
  53. }
  54. class Programmers extends Employees{
  55.   function code(){
  56.     echo "<p>$this->name is coding</p>";
  57.   }
  58.   function getName(){
  59.     return $this->name;
  60.   }
  61. }
  62. $e1 = new Employees('e1');
  63. $e2 = new MAnagers(2,'e2');
  64. $e3 = new Programmers('e3');
  65. $e1->work();
  66. $e2->work();
  67. $e3->work();
  68. $e2->assignJob();
  69. $e3->Code();
  70. echo "<p>{$e3->getName()}</p>";
  71. //echo "<p>$e1->name</p>";
  72. if($e2 instanceof Employees){
  73.   echo "<p>ok</p>";
  74. }else{
  75.   echo "<p>no</p>";
  76. }
  77. unset($e1,$e2,$e3);
复制代码
运行效果:
  1. e1 : 0 : parent : __construct
  2. e2 : 1 : parent : __construct
  3. e2 , 2 : self : __construct
  4. e3 : 1 : parent : __construct
  5. e1 is working
  6. e2 is working
  7. e3 is working
  8. e2 assign jobs
  9. e3 is coding
  10. e3
  11. ok
  12. parent unset e1
  13. self unset e2
  14. parent unset e3
复制代码
更多关于PHP相干内容感兴趣的读者可查看本站专题:《php面向对象步伐设计入门教程》、《PHP数组(Array)使用本领大全》、《PHP根本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库使用入门教程》及《php常见数据库使用本领汇总》
盼望本文所述对各人PHP步伐设计有所帮助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作