php类继承的使用

 

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

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

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

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

语法:class father{

}

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

语法:class son extends father{

}

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

下面让我们做点实际点事情吧,毕竟PHP类的继承中定义一个父类和子类是要完成某个任务的吧!在这里这个任务比较单调,就拿人来说,人有名字(属性),人要睡觉还要吃饭(方法)。我们就用这个基本的任务要完成本节的知识吧。
  1. <?php  
  2. class father{  
  3. protected $name;  
  4. function __construct($name){  
  5. $this->name=$name;  
  6. }  
  7. function __destruct(){  
  8. echo "<p>{$this->name}也是要死的<br/></p>";  
  9. }  
  10. //这个就是所谓的构造函数,用来初始化  
  11. function go_to_sleeping(){  
  12. echo "<p>{$this->name}想睡觉.</p>";  
  13. }  
  14. function eat(){  
  15. echo "<p>{$this->name}想吃饭.</p>";  
  16. }  
  17. }  
  18. class son extends father{  
  19. function playing(){  
  20. //小孩子会很调皮的,当然他也是要吃要睡的生物  
  21. echo "<p>{$this->name}正在捣蛋...</p>";  
  22. }  
  23. }  
  24. $your_father=new father("老爸");  
  25. $your_father->go_to_sleeping();  
  26. $your_father->eat();  
  27. $my_son=new son('宝贝');  
  28. $my_son->go_to_sleeping();  
  29. $my_son->eat();  
  30. $my_son->playing();  
  31. ?>  
  32. <?php 
  33. class father{ 
  34. protected $name; 
  35. function __construct($name){ 
  36. $this->name=$name; 
  37. function __destruct(){ 
  38. echo "<p>{$this->name}也是要死的<br/></p>"; 
  39. //这个就是所谓的构造函数,用来初始化 
  40. function go_to_sleeping(){ 
  41. echo "<p>{$this->name}想睡觉.</p>"; 
  42. function eat(){ 
  43. echo "<p>{$this->name}想吃饭.</p>"; 
  44. class son extends father{ 
  45. function playing(){ 
  46. //小孩子会很调皮的,当然他也是要吃要睡的生物 
  47. echo "<p>{$this->name}正在捣蛋...</p>"; 
  48. $your_father=new father("老爸"); 
  49. $your_father->go_to_sleeping(); 
  50. $your_father->eat(); 
  51. $my_son=new son('宝贝'); 
  52. $my_son->go_to_sleeping(); 
  53. $my_son->eat(); 
  54. $my_son->playing(); 
  55. ?>

解析:在我们的第一个使用继承的范例里使用了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();
?>

 

 

 文章引用自:http://hi.baidu.com/love_mybaby/blog/item/9ee1d1620ea8d4d7e7113aaf.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值