PHP面向对象中类的继承的使用

PHP类的继承在PHP语言的学习中是一个比较重要的知识点。那么我们该如何正确的学习PHP类的继承呢?在PHP面向对象编程里,类的继承永远是最关键的。

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

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

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

语法:class father{

}

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

语法:class son extends father{

}

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

下面让我们做点实际点事情吧,毕竟PHP类的继承中定义一个父类和子类是要完成某个任务的吧!在这里这个任务比较单调,就拿人来说,人有名字(属性),人要睡觉还要吃饭(方法)。我们就用这个基本的任务要完成本节的知识吧。
<?php  
class father{  
protected $name;  
function __construct($name){  
$this->name=$name;  
}  
function __destruct(){  
echo "<p>{$this->name}也是要死的<br/></p>";  
}  
//这个就是所谓的构造函数,用来初始化  
function go_to_sleeping(){  
echo "<p>{$this->name}想睡觉.</p>";  
}  
function eat(){  
echo "<p>{$this->name}想吃饭.</p>";  
}  
}  
class son extends father{  
function playing(){  
//小孩子会很调皮的,当然他也是要吃要睡的生物  
echo "<p>{$this->name}正在捣蛋...</p>";  
}  
}  
$your_father=new father("老爸");  
$your_father->go_to_sleeping();  
$your_father->eat();  
$my_son=new son('宝贝');  
$my_son->go_to_sleeping();  
$my_son->eat();  
$my_son->playing();  
?>  
<?php 
class father{ 
protected $name; 
function __construct($name){ 
$this->name=$name; 

function __destruct(){ 
echo "<p>{$this->name}也是要死的<br/></p>"; 

//这个就是所谓的构造函数,用来初始化 
function go_to_sleeping(){ 
echo "<p>{$this->name}想睡觉.</p>"; 

function eat(){ 
echo "<p>{$this->name}想吃饭.</p>"; 


class son extends father{ 
function playing(){ 
//小孩子会很调皮的,当然他也是要吃要睡的生物 
echo "<p>{$this->name}正在捣蛋...</p>"; 


$your_father=new father("老爸"); 
$your_father->go_to_sleeping(); 
$your_father->eat(); 
$my_son=new son('宝贝'); 
$my_son->go_to_sleeping(); 
$my_son->eat(); 
$my_son->playing(); 
?>
解析:在我们的第一个使用继承的范例里使用了PHP的构造函数中所提到的构造函数和PHP类的封装中的关键字,如果有什么不明白的就去看看吧!我可不想再多说了,中午没想睡觉呀.说说这段小程序吧。

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

文章引用自:http://club.topsage.com/thread-501298-1-1.html

<?php
class my_class{
var $username="小鸡";
var $num=10;
function yingxiaoji(){
   //使用类里的全局变量
$num=$this->num;
$username=$this->username;
echo "我养了".$num."条".$username;
}
function jiegou(){
   //使用类中的函数时,用this直接引用
   $this->yingxiaoji();
   echo "全都卖了";
}
}
//php类的承 extends表示继承,但是php不允许同时继承多个基类
class my_class_extend extends my_class{

var $color="红色";
function mycolor(){
   $color=$this->color;
   $username=$this->username;
   echo ",这只".$username."是".$color;
}
}
$myname=new my_class(); //类的实例化
$myname->yingxiaoji();
echo "<br>";

//针对类中的变量重新赋值
$myname->username="小鸭子";
$myname->num="20";
$myname->yingxiaoji();
echo "<br>";

$myname->jiegou();
echo "<br>";

//初始化一个类的继承类
$myname_extend=new my_class_extend();
$myname_extend->jiegou();
$myname_extend->mycolor();

echo "<br>";
//由于是继承类,那么它的基类的属性全都有了,就可以直接给基类的变量传值
$myname_extend->username="小鸭子";
$myname_extend->num=100;
$myname_extend->color="黑色";
$myname_extend->jiegou();
$myname_extend->mycolor();
?>

时间: 2024-09-02 04:14:04

PHP面向对象中类的继承的使用的相关文章

PHP中类的继承和用法实例分析_php技巧

本文实例讲述了PHP中类的继承和用法.分享给大家供大家参考,具体如下: 1.继承关键字 :extends PHP类的继承,我们可以理解成共享被继承类的内容.PHP中使用extends单一继承的方法,请切忌!(非C++多继承)被继承的类我们叫做父类(基类)继承者成为子类(派生类). 2.PHP继承的规则 CLASS1------>CLASS2------>CLASS3 依次被继承,class3拥有class1.class2所以功能和属性,避免方法和属性重名. class  Son{} 继承cla

Lua面向对象之类和继承浅析

  这篇文章主要介绍了Lua面向对象之类和继承浅析,本文讲解了一些Lua面向对象的一些知识,需要的朋友可以参考下 Lua中的table就是一种对象,但是如果直接使用仍然会存在大量的问题,如下: 代码如下: Account = {balance = 0} function Account.withdraw(v) Account.balance = Account.balance - v end --下面是测试调用函数 Account.withdraw(100.00) 在上面的withdraw函数内

PHP中类的继承关系

原文:PHP中类的继承关系 在PHP中,我时常会写一个类,类写了一个共用方法,然后让子类去继承就能得到相应的功能.假设大致有这么一个父类: 1 <?php 2 class Father{ 3 4 public function __construct(){ 5 echo '我是父类的构造方法!'; 6 } 7 8 protected function say($str = 'Hello World!'){ 9 echo '说了一句话:' . $str; 10 } 11 } 12 ?> 然后呢,

初学者的忧伤-关于面向对象中类的问题

问题描述 关于面向对象中类的问题 定义一个学生类,其中有3个数据成员有学号.姓名.年龄,以及若干成员函数.同时编写主函数使用这个类,实现对学生数据的赋值和输出.并利用这个类建立一个对象数组,内放5个学生的数据,利用指针输出第1,3,5个学生的数据. 要求:使用构造函数和析构函数实现对数据的输入.输出.在头文件student.h中完成类的定义,在student.cpp中完成类的实现,在_tmain().cpp中完成主函数编写. 解决方案 面向对象代理类的问题面向对象问题复习python中类的命名空

Python中类的继承

在软件设计里,代码的复用和代码稳定性,一直是软件开发的重要目标之一,因为只有这样才能积累各种基础组件,以及维护以前做过的工作.从复用的特性来说,就是利用以前做过的工作,比如就像硬件里的IC一样,不需要知道它是怎么样实现的,只要使用它就行了.因而软件也需要有这种IC,在代码层次里的IC,以前看来只是用函数的方式复用,或者只是数据结构的复用.当迈进面向对象编程时代时,自然而然地想到就使用类来复用了,这样数据结构和函数都同时能复用上,比函数的复用更省心了一步,就是数据结构和算法都不需要关心了,只关心类

C++中类的继承特性

整个c++程序设计全面围绕面向对象的方式进行,类的继承特性是c++的一个非常非常重要的机制,继承特性可以使一个新类获得其父类的操作和数据结构,程序员只需在新类中增加原有类中没有的成分. 可以说这一章节的内容是c++面向对象程序设计的关键. 下面我们简单的来说一下继承的概念,先看下图: 上图是一个抽象描述的特性继承表 交通工具是一个基类(也称做父类),通常情况下所有交通工具所共同具备的特性是速度与额定载人的数量,但按照生活常规,我们来继续给交通工具来细分类的时候,我们会分别想到有汽车类和飞机类等等

关于面向对象中,继承、多态问题。

问题描述 最近在学java基础,学完面向对象感觉自己很不理解继承和多态,不知道该怎么用,谁能给我讲下啊,很困惑的说. 解决方案 解决方案二:感觉java编程思想在这一块说的是非常的好.解决方案三:不理解可以先放一放多敲敲代码月往后就会越懂得现在先积累代码量不要一味的抄代码解决方案四:了解---->敲代码----->理解解决方案五:继承就是扩展或派生基类,你可以这样理解:子类内部持有父类的引用,有共同的行为和属性(private,构造器除外),你可以对重写父类的方法来达到多态的目的.而多态就是,

Lua面向对象之类和继承_Lua

终于来了,在Lua中的面向对象编程,相信目前学习Lua的大部分人都是为了开发手机网游吧. 而且基本都是奔着脚本语言的热更新特性去的,所以全脚本开发变得十分流行. 对于普及不太广的Lua(相对于C++.Java等主流语言),需要短时间上手开发游戏,对新手而言不算简单. 所以大家才更习惯于继续用面向对象思想去折腾Lua吧~ 好了,不唠叨了,我最不喜欢唠叨了.(小若:是是是,你一点都不唠叨,赶紧开讲!) 1.类的对象 至于如何创建一个类,大家已经很清楚了,就是一个table而已. 那么,要使用这个类去

javascript 面向对象封装与继承_javascript技巧

整理一下js面向对象中的封装和继承. 1.封装 js中封装有很多种实现方式,这里列出常用的几种. 1.1 原始模式生成对象 直接将我们的成员写入对象中,用函数返回. 缺点:很难看出是一个模式出来的实例. 代码: 复制代码 代码如下:        function Stu(name, score) {             return {                 name: name,                 score: score             }