搜索
首页后端开发php教程深入探讨PHP类的继承_PHP教程
深入探讨PHP类的继承_PHP教程Jul 15, 2016 pm 01:33 PM
php一样为了为什么人类探讨深入继承

这就像人类生儿育女一样(为什么一定要生儿育女呢,难道就是为了防老!不得而知呀),你把自己的一些基因和你老婆的基因各拿出来一些,再生成一个新的个体,这个新的个性一定会包含你们两个人身上的特征,这就是生物上关于遗传(继承)的一个解说。在编程的世界是这个遗传就是继承!

首先在了解了继承的一些活生生的原理后,我想再来看PHP类的继承是不是不再那么神秘。或许它本来就不神秘,是因为我们自己太复杂了吧。要有继承就得有一个“根源”,这“根源”你可能想像你以后生了儿子或者女儿,他们会从你这里得到一些“东西(属性和方法)”,这样你的“后代”就是持有你的(根源)所有一些特征了。下面通过语法来描述一下这个在PHP的面向对象中是怎么表达吧(不可能像人类那么直接啦,结婚,过段时间你的后代就产生了)

1.产生“根源”类(父类或者基类)

语法:class father{

}

1.产生“后代”(子类)

语法:class son extends father{

}

说明:父类只是一个平常的类,要想有后代你只需要在平常类后加一个extends关键字就OK了,这样你的子类只拥有了父类所有的属性和方法了。其实就是这么简单罢了。

下面让我们做点实际点事情吧,毕竟PHP类的继承中定义一个父类和子类是要完成某个任务的吧!在这里这个任务比较单调,就拿人来说,人有名字(属性),人要睡觉还要吃饭(方法)。我们就用这个基本的任务要完成本节的知识吧。

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><span> ?php   </span></span></span></li>
<li><span>class father{   </span></li>
<li class="alt"><span>protected $name;   </span></li>
<li><span>function __construct($name){   </span></li>
<li class="alt">
<span>$this-</span><span class="tag">></span><span class="attribute">name</span><span>=$name;   </span>
</li>
<li><span>}   </span></li>
<li class="alt"><span>function __destruct(){   </span></li>
<li>
<span>echo "</span><span class="tag"><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}也是要死的</span><span class="tag"><span> </span><span class="tag-name">br</span><span class="tag">/></span><span class="tag"><span> /p</span><span class="tag">></span><span>";   </span></span></span></span>
</li>
<li class="alt"><span>}   </span></li>
<li><span>//这个就是所谓的构造函数,用来初始化   </span></li>
<li class="alt"><span>function go_to_sleeping(){   </span></li>
<li>
<span>echo "</span><span class="tag"><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}想睡觉.</span><span class="tag"><span> /p</span><span class="tag">></span><span>";   </span></span></span>
</li>
<li class="alt"><span>}   </span></li>
<li><span>function eat(){   </span></li>
<li class="alt">
<span>echo "</span><span class="tag"><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}想吃饭.</span><span class="tag"><span> /p</span><span class="tag">></span><span>";   </span></span></span>
</li>
<li><span>}   </span></li>
<li class="alt"><span>}   </span></li>
<li><span>class son extends father{   </span></li>
<li class="alt"><span>function playing(){   </span></li>
<li><span>//小孩子会很调皮的,当然他也是要吃要睡的生物   </span></li>
<li class="alt">
<span>echo "</span><span class="tag"><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}正在捣蛋...</span><span class="tag"><span> /p</span><span class="tag">></span><span>";   </span></span></span>
</li>
<li><span>}   </span></li>
<li class="alt"><span>}   </span></li>
<li>
<span>$</span><span class="attribute">your_father</span><span>=</span><span class="attribute-value">new</span><span> father("老爸");   </span>
</li>
<li class="alt">
<span>$your_father-</span><span class="tag">></span><span>go_to_sleeping();   </span>
</li>
<li>
<span>$your_father-</span><span class="tag">></span><span>eat();   </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">my_son</span><span>=</span><span class="attribute-value">new</span><span> son('宝贝');   </span>
</li>
<li>
<span>$my_son-</span><span class="tag">></span><span>go_to_sleeping();   </span>
</li>
<li class="alt">
<span>$my_son-</span><span class="tag">></span><span>eat();   </span>
</li>
<li>
<span>$my_son-</span><span class="tag">></span><span>playing();   </span>
</li>
<li class="alt">
<span class="tag">?></span><span>   </span>
</li>
<li><span class="tag"><span> ?php  </span></span></li>
<li class="alt"><span>class father{  </span></li>
<li><span>protected $name;  </span></li>
<li class="alt"><span>function __construct($name){  </span></li>
<li>
<span>$this-</span><span class="tag">></span><span class="attribute">name</span><span>=$name;  </span>
</li>
<li class="alt"><span>}  </span></li>
<li><span>function __destruct(){  </span></li>
<li class="alt">
<span>echo "</span><span class="tag"><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}也是要死的</span><span class="tag"><span> </span><span class="tag-name">br</span><span class="tag">/></span><span class="tag"><span> /p</span><span class="tag">></span><span>";  </span></span></span></span>
</li>
<li><span>}  </span></li>
<li class="alt"><span>//这个就是所谓的构造函数,用来初始化  </span></li>
<li><span>function go_to_sleeping(){  </span></li>
<li class="alt">
<span>echo "</span><span class="tag"><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}想睡觉.</span><span class="tag"><span> /p</span><span class="tag">></span><span>";  </span></span></span>
</li>
<li><span>}  </span></li>
<li class="alt"><span>function eat(){  </span></li>
<li>
<span>echo "</span><span class="tag"><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}想吃饭.</span><span class="tag"></span><span class="tag-name">p</span><span class="tag">></span><span>";  </span></span>
</li>
<li class="alt"><span>}  </span></li>
<li><span>}  </span></li>
<li class="alt"><span>class son extends father{  </span></li>
<li><span>function playing(){  </span></li>
<li class="alt"><span>//小孩子会很调皮的,当然他也是要吃要睡的生物  </span></li>
<li>
<span>echo "</span><span class="tag"><span> </span><span class="tag-name">p</span><span class="tag">></span><span>{$this-</span><span class="tag">></span><span>name}正在捣蛋...</span><span class="tag"><span> /p</span><span class="tag">></span><span>";  </span></span></span>
</li>
<li class="alt"><span>}  </span></li>
<li><span>}  </span></li>
<li class="alt">
<span>$</span><span class="attribute">your_father</span><span>=</span><span class="attribute-value">new</span><span> father("老爸");  </span>
</li>
<li>
<span>$your_father-</span><span class="tag">></span><span>go_to_sleeping();  </span>
</li>
<li class="alt">
<span>$your_father-</span><span class="tag">></span><span>eat();  </span>
</li>
<li>
<span>$</span><span class="attribute">my_son</span><span>=</span><span class="attribute-value">new</span><span> son('宝贝');  </span>
</li>
<li class="alt">
<span>$my_son-</span><span class="tag">></span><span>go_to_sleeping();  </span>
</li>
<li>
<span>$my_son-</span><span class="tag">></span><span>eat();  </span>
</li>
<li class="alt">
<span>$my_son-</span><span class="tag">></span><span>playing();  </span>
</li>
<li>
<span class="tag">?></span><span> </span>
</li>
</ol>

解析:在我们的第一个使用继承的范例里使用了PHP的构造函数中所提到的构造函数和PHP类的封装中的关键字,如果有什么不明白的就去看看吧!我可不想再多说了,中午没想睡觉呀.说说这段小程序吧。

在类的father里,我们定义了一般的特征,比如人的名字,人要吃饭和睡觉,然后在它的子类(后代)我们定义一个个性化的方法(playing),毕竟人与人之间是有不同的地方吧。我们使用构造函数来初始化这个人名,当然也使用了析构函数来“消灭”掉对象,但你可能没有发现在子类里内是没有构造函数和析构函数的,所以子类是继承了父的所有方法,要不然你怎么能$my_son->go_to_sleeping();这样调用呢,这就是PHP类的继承了。
 


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446065.htmlTechArticle这就像人类生儿育女一样(为什么一定要生儿育女呢,难道就是为了防老!不得而知呀),你把自己的一些基因和你老婆的基因各拿出来一...
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
深入探讨:Django框架是什么?深入探讨:Django框架是什么?Jan 19, 2024 am 09:23 AM

Django框架是一种用于Web应用程序的Python框架,它提供了一个简单而强大的方式来创建Web应用程序。事实上,Django已经成为当前最受欢迎的PythonWeb开发框架之一,也成为很多公司的首选,包括Instagram和Pinterest。本文将深入探讨Django框架是什么,包括基础概念和重要组件,以及具体代码示例。Django基础概念Djan

深入了解HTTP状态码100:它代表什么意思?深入了解HTTP状态码100:它代表什么意思?Feb 20, 2024 pm 04:15 PM

深入了解HTTP状态码100:它代表什么意思?HTTP协议是现代互联网应用中最为常用的协议之一,它定义了浏览器和Web服务器之间进行通信所需的标准规范。在HTTP请求和响应的过程中,服务器会向浏览器返回各种类型的状态码,以反映请求的处理情况。其中,HTTP状态码100是一种特殊的状态码,用来表示"继续"。HTTP状态码由三位数字组成,每个状态码都有特定的含义

深入探讨Laravel中的Head请求方法深入探讨Laravel中的Head请求方法Mar 06, 2024 pm 03:36 PM

作为一个流行的PHP框架,Laravel提供了许多便捷的请求方法来处理不同类型的HTTP请求。其中,Head请求方法是一个比较特殊且常被忽视的方法。在本文中,我们将深入探讨Laravel中Head请求方法的作用、用法和示例代码。什么是Head请求方法?Head请求方法是HTTP协议中定义的一种请求方法,在发送Head请求时,服务器将仅返回请求头信息,而不会返

深入探讨Go语言对C语言的兼容程度深入探讨Go语言对C语言的兼容程度Mar 07, 2024 pm 02:45 PM

Go语言是一门由Google开发的编程语言,具有高效、简洁、并发性强等特点。它在语法结构、包管理、高级特性等方面都有很大的优势,因此备受程序员青睐。然而,在实际开发中,很多项目会涉及到与传统的编程语言C进行交互,因此Go语言与C语言的兼容性就显得尤为重要。首先,我们来谈谈Go语言与C语言的兼容性。在Go语言中,可以通过CGo将Go语言与C语言进行交互。CGo

深入了解Linux ldconfig深入了解Linux ldconfigMar 14, 2024 pm 03:39 PM

Linuxldconfig是一个用于动态链接库管理的工具,可以帮助系统在运行时找到并加载共享库。它主要用于更新系统的动态链接器运行时连接库缓存,以保证程序可以正确链接到共享库。ldconfig主要用于两个方面:一是添加、删除共享库路径,并更新相关信息到配置文件中;二是根据配置文件中的路径重新生成动态连接库链接器的缓存。接下来将介绍如何使用ldconf

深入探讨:Go语言中的单线程特性深入探讨:Go语言中的单线程特性Mar 15, 2024 pm 02:09 PM

Go语言作为一种现代化的编程语言,以其简洁高效的特性在近年来受到越来越多开发者的喜爱和青睐。其中一个让人独特的地方就是其单线程特性。在传统的多线程编程语言中,开发者通常需要手动管理线程之间的同步和互斥,而在Go语言中,借助其独特的协程(Goroutine)和通信机制(channel),可以方便且高效地实现并发编程。一、Goroutine与单线程:Go语言中的

深入探讨Linux中常见的特殊字符深入探讨Linux中常见的特殊字符Mar 14, 2024 pm 02:54 PM

Linux操作系统作为一种常用的开源操作系统,具有强大的可定制性和灵活性。在使用Linux系统时,我们经常会遇到各种特殊字符的处理。这些特殊字符在命令行中具有特殊的含义,能够实现很多高级功能。本文将深入探讨Linux中常见的特殊字符,并结合具体的代码示例来详细介绍它们的用法。通配符:通配符是用来匹配文件名的特殊字符,常见的通配符包括*、?、[]等。下面是几种

什么是嵌入式Linux?深入了解什么是嵌入式Linux?深入了解Mar 20, 2024 pm 01:54 PM

标题:探究嵌入式Linux:什么是嵌入式Linux及其应用嵌入式系统通常指的是专为特定应用领域设计的计算机系统,它们通常用于嵌入在设备或系统中,以执行特定的功能或任务。嵌入式Linux则是在嵌入式系统中运行的Linux操作系统的版本。Linux作为一个开源的操作系统,广泛应用于嵌入式设备中,提供了稳定性、灵活性和强大的功能。1.嵌入式Linux的特点(1)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具