php面向对象编程的继承性

为什么需要继承?

<?php  //开发一套学生管理系统(小学生pupil,大学生,...)  //父类  class Stu{    public $name;    protected $age;    protected $grade;    public function showInfo(){       echo $this->name."||".$this->age;    }  }  //子类  class Pupil extends stu{ //小学生    public function testing(){       echo "小学生考试";    }  }  class Graduate extends stu{//研究生      public function testing(){       echo "研究生考试";      }    }//创建学生$stu1=new Pupil();$stu1->testing();$stu1->name="www.bianceng.cn";$stu1->showInfo();echo "<br />";//创建研究生$stu2=new Graduate();$stu2->testing();$stu2->name="hello";$stu2->showInfo();?>

从上面代码可以看出,所谓继承,就是一个子类通过 extends 父类,把父类的public/protect属性和方法继承下来,但不能继承父类的private属性和方法。

继承的基本语法:

class 类名 extends 父类名{

//子类需要的属性和方法

}

使用继承的注意事项:

1)子类能把父类的public/protect属性和方法继承下来,但不能继承父类的private属性和方法

<?php//父类的什么属性和方法被子类继承class A{  public $n1=1;  protected $n2="www.bianceng.cn";  private $n3=20;  public function test1(){    echo "test1()";  }  public function test2(){    echo "test2()";  }  public function test3(){    echo "test3()";  }} class SubClass extends A{     function show(){	   echo "<br />".$this->n2; //	 }  }  //创建SubClass对象  $sub1=new SubClass();  $sub1->test1();  echo "<br />";  $sub1->test2();  echo "<br />"; $sub1->test3(); echo "<br />".$sub1->n1; $sub1->show();?>

2)php继承是单一继承,即一个子类不能直接继承两个父类

可以通过继承两次的方法达到继承多个类的目的。

<?php   class A{   }   class B extends A{   }   class C extends B{ //通过两次继承,C继承了A和B两个类   }?>

3)当创建子类对象的时候,默认不会自动调用父类的构造方法。

<?php class A{  //构造方法    public function __construct(){      echo "A__construct";     }  }  class B extends A{    function __construct(){     echo "B__construct";    }  }  //创建对象实例  $b=new B(); //输出B__construct?>

4)如果希望在子类中调用父类的构造方法或者其它方法(public/protected),可以这样处理(了解即可):

(1)类名::方法名();

(2)parent::方法名();

例:

<?php class A{  //构造方法    public $n1=90;    public function __construct($n1){	  $this->n1=$n1;      echo "A__construct";     }  }  class B extends A{    function __construct(){     echo "B__construct";     //显式的调用父类的方法     //A::__construct(900);	 parent::__construct(900);    }  }  //创建对象实例  $b=new B(); //输出B__construct  echo "<br />".$b->n1; //输出900?>

5)如果子类(派生类)中的方法与父类(基类)中的方法相同,称之为方法重写/方法覆盖。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索继承
, 方法
, 面向对象编程
, 属性
, 子类
, 类名
, public
, 类的继承
, 多个相同类的属性
, pb9继承方法
, 子类继承父类
, 继承性
php继承
面向对象编程 继承、js面向对象编程 继承、php面向对象编程、php面向对象编程思想、php面向对象编程实例,以便于您获取更多的相关知识。

时间: 2024-12-09 17:27:01

php面向对象编程的继承性的相关文章

JS面向对象编程详解_javascript技巧

序言 在JavaScript的大世界里讨论面向对象,都要提到两点:1.JavaScript是一门基于原型的面向对象语言 2.模拟类语言的面向对象方式.对于为什么要模拟类语言的面向对象,我个人认为:某些情况下,原型模式能够提供一定的便利,但在复杂的应用中,基于原型的面向对象系统在抽象性与继承性方面差强人意.由于JavaScript是唯一一个被各大浏览器支持的脚本语言,所以各路高手不得不使用各种方法来提高语言的便利性,优化的结果就是其编写的代码越来越像类语言中的面向对象方式,从而也掩盖了JavaSc

Delphi面向对象编程的20条规则之一

问题描述 前言 大多数Delphi程序员都像使用VisualBasic那样使用他们手头上开发工具,而丝毫没有意识到Delphi的强大功能,更谈不上使用这些功能了.(写到这里,编辑惶恐的举起了手,怎么可能呢?)Delphi和VisualBasic不同,Delphi完全建立在面向对象结构上,这不仅影响到VCL的结构,而且影响到使用Delphi开发的每一个程序. 在本文中,我不想涉及到面向对象编程(OOP)的所有理论,只是提出一些简单的经验规则.希望这些规则能够帮助改善你的程序结构.无论你开发的是何种

讲解Python中面向对象编程的相关知识

  这篇文章主要介绍了深入讲解Python中面向对象编程的相关知识,是Python入门学习中的基础知识,需要的朋友可以参考下 Python从第一天开始就是面向对象的语言.正因为如此,创建和使用类和对象是非常地容易.本章将帮助您在使用Python面向对象编程的技术方面所有提高. 如果没有任何以往面向对象(OO)的编程的经验,那么可能要了解一些基本的入门课程就可以了,或者至少某种形式的教程,让你有了解基本概念. 但是,这里会比较少地介绍面向对象编程(OOP): OOP术语概述 类: 用户定义的原型对

PHP面向对象编程详解:类和对象

PHP面向对象编程详解:类和对象 从OOP的视角看,不应区分语言.无论是C++.无论是Java.无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你的思想轻松的跳跃.便没有对于Java..net.PHP 之间谁强谁弱的争执了. 希望这个介绍PHP5面向对象编程(OOP)的资料能让初学者受益,能让更多的PHPer开始转向OO的编程过程. 相对PHP4,PHP5在面向对象方面改变了很多.我们将只介绍PHP5环境下的面向对象.而我们必须改变自己来跟随PHP5的发展.如果代

js面向对象 编程: JavaScript 面向对象编程,严格过程的标准化编程法,目前为止最好的 JS 生成对象代码结构

市面上流行了很多 JavaScript 面向对象的编程方法,其中不少都有好些问题.这里总结最正确的 JavaScript 面向对象编程模式.对于类 Special 继承自类 Common 继承自类 Super 的情况,一个 Special 对象的创建,详细说来,应该经历以下步骤.1 确定继承关系1.1 读取 Special 的父类,发现是 Common1.2 读取 Common 的父类,发现是 Super1.3 读取 Super 的父类,发现没有了(隐形父类 Object)2 加载类结构(如果没

PHP中实现面向对象编程(下)

编程|对象 多态性 多态性被定义为当在运行时刻一个对象作为参数传递时,对象能决定调用那个方法的能力.例如,用一个类定义了方法 "draw",继承类重定义 "draw" 的行为来画圆或正方形,这样你就有一个参数为 x 的函数,在函数里可以调用$x->draw(). 如果支持多态性,那么 "draw" 方法的调用就取决于对象 x 的类型.多态性在PHP中很自然被支持(想一想这种情况在C++编译器中如果编译,那一个方法被调用?然而你不知道对象的类

PHP中实现面向对象编程(上)

编程|对象 这篇文章介绍在PHP的面向对象编程(OOP).我将演示如何用面向对象的概念编出较少的代码但更好的程序.祝大家好运. 面向对象编程的概念对每一个作者来说都有不同的看法,我提醒一下一个面向对象语言应有的东西: - 数据抽象和信息隐藏 - 继承 - 多态性 在PHP中使用类进行封装的办法: class Something { // In OOP classes are usually named starting with a cap letter. var $x; function se

JAVA程序员必读:基础篇(2)面向对象编程概念

编程|程序|程序员|对象|概念 如果你以前从来没有使用面向对象语言,你需要在开始编写JAVA代码之前先理解这个概念.你需要理解什么是对象.什么是类.对象和类的关系怎样以及使用消息怎样在对象之间进行通讯.本教程的前面部分将描述面向对象编程的概念,而后面的教程将教你怎样将这个概念编成代码. 2.1什么是对象 对象是一些相关的变量和方法的软件集.软件对象经常用于模仿现实世界中我们身边的一些对象.对象是理解面向对象技术的关键.你在学习之前可以看看现实生活中的对象,比如狗.桌子.电视.自行车等等.你可以发

最大限制地提高代码的可重用性,克服传统面向对象编程方法在可重用性方面的不足

编程|对象     重用是一种神话,这似乎正在日渐成为编程人员的一种共识.然而,重用可能难以实现,因为传统面向对象编程方法在可重用性方面存在一些不足.本技巧说明了组成支持重用的一种不同方法的三个步骤. 第一步:将功能移出类实例方法由于类继承机制缺乏精确性,因此对于代码重用来说它并不是一种最理想的机制.也就是说,如果您要重用某个类的单个方法,就必须继承该类的其他方法以及数据成员.这种累赘不必要地将要重用此方法的代码复杂化了.继承类对其父类的依赖性引入了额外的复杂性:对父类的更改会影响子类:当更改父