=========================================
*                 继承 extends
*=========================================
*1.PHP只支持类单继承,但可以继承多个接口
*2.只继承父类公有和受保护的成员
*3.重写Overwritte:子类中的方法名如果和父类的方法名相同,则会重写父类的方法
*4.子类重写父类的方法时,方法访问修饰符不能低于父类中方法的修饰符
*5.子类如果要调用父类的构造函数,必须显式调用parent::__construct();/Person::__construct();
*/

/**
* Person
* 这个例子:
* 子类继承了父类,同时继承了public和protected成员的方法和属性,但不能继承private成员
* 调用了父类的构造函数
* 重写了父类的方法say()
*/

<?php
class Person
{
public $name;
public $age;
public $sex; function __construct()
{
echo "这是父类Person中的构造函数"."\n";
} protected function Say()
{
echo "这是父类Person中的say()"."\n";
}
} /**
* Chinese
*/
class Chinese extends Person
{
function __construct($name,$age,$sex)
{
parent::__construct();//显式调用父类的构造函数
//Person::__construct();
echo "这是子类Chinese中的构造函数"."\n";
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
} public function Say() //对父类方法的重写
{
echo "我是中国人,我叫:".$this->name.",今年:".$this->age."岁了".",性别:".$this->sex."\n\n";
} private function Work()
{
echo "我是中国人,我在耕田"."\n\n";
}
} /**
* Chinese
*/
class Bejing extends Chinese
{
function __construct($name,$age,$sex)
{
parent::__construct("","","");//显式调用父类的构造函数
//Person::__construct();
echo "这是子类Bejing中的构造函数"."\n";
$this->name=$name;
$this->age=$age;
$this->sex=$sex; //parent::Work();//Fatal error: Call to private method Chinese::Work()//不能继承私有的成员
} public function Say() //对父类方法的重写
{
echo "我是北京人,我叫:".$this->name.",今年:".$this->age."岁了".",性别:".$this->sex."\n\n";
}
} /**
* English
*/
class English extends Person
{
function __construct($name,$age,$sex)
{
echo "这是子类English中的构造函数"."\n";
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
} public function Say() //对父类方法的重写
{
echo "我是英国人,叫:".$this->name.",今年:".$this->age."岁了".",性别:".$this->sex."\n\n";
}
} //调用:
$p1 = new Chinese("杰克",19,"男");
$p1->Say(); $b1 = new Bejing("小王",19,"女");
$b1->Say(); $p2 = new English("jack",24,"男");
$p2->Say(); //输出结果>>>:
// 这是父类Person中的构造函数
// 这是子类Chinese中的构造函数
// 我是中国人,我叫:杰克,今年:19岁了,性别:男 // 这是父类Person中的构造函数
// 这是子类Chinese中的构造函数
// 这是子类Bejing中的构造函数
// 我是北京人,我叫:小王,今年:19岁了,性别:女 // 这是子类English中的构造函数
// 我是英国人,叫:jack,今年:24岁了,性别:男
?>

PHP基础之 继承(一)的更多相关文章

  1. 二十二. Python基础(22)--继承

    二十二. Python基础(22)--继承 ● 知识框架   ● 继承关系中self的指向 当一个对象调用一个方法时,这个方法的self形参会指向这个对象 class A:     def get(s ...

  2. 第二十八节:Java基础-进阶继承,抽象类,接口

    前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...

  3. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  4. 三、Java基础---------关于继承、构造函数、静态代码块执行顺序示例讲解

    在上节博客中曾提到过类的继承,这篇文章主要是介绍类的继承.构造函数以及静态代码块的执行顺序. 首先接着分析在黑马基础测试中的一个关于继承的题目,题目描述如下: 声明类Person,包含2个成员变量:n ...

  5. JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)

    实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...

  6. 【Java基础】继承的一些总结

    什么是继承 把一些类的具有共性的东西剥离出来形成一个新的类,然后各个其他类保留自己独有的特性,并用关键字extends继承这个剥离出来的新的类,可以最终达到各类原始相同效果,但是在每个类中,单用一个“ ...

  7. Java基础08 继承

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 继承(inheritance)是面向对象的重要概念.继承是除组合(composit ...

  8. C++基础——类继承中方法重载

    一.前言 在上一篇C++基础博文中讨论了C++最基本的代码重用特性——类继承,派生类可以在继承基类元素的同时,添加新的成员和方法.但是没有考虑一种情况:派生类继承下来的方法的实现细节并不一定适合派生类 ...

  9. Python基础之继承与派生

    一.什么是继承: 继承是一种创建新的类的方式,新建的类可以继承一个或过个父类,原始类成为基类或超类,新建的类则称为派生类 或子类. 其中,继承又分为:单继承和多继承. class parent_cla ...

  10. Python设计模式 - 基础 - 封装 & 继承 & 多态

    面向对象的核心是对象,世间万物都可以看作对象,任何一个对象都可以通过一系列属性和行为来描述,可以包含任意数量和类型的数据或操作.类是用来描述具有相同属性和方法的所有对象的集合.类通常是抽象化的概念,而 ...

随机推荐

  1. Web 使用PostMan提交特殊格式数据

    使用PostMan 选择POST模式中的RAW模式 然后点击Headers添加Content-Type 类型比如是 application/json 然后就可以在body中以Json格式上传数据了 前 ...

  2. XmlReader读取XML

    StringBuilder output = new StringBuilder(); String xmlString = @"<bookstore> <book gen ...

  3. Scala类基础

    最近在开始学习Scala,本篇文章我们来讲解一下Scala中类的使用 class Counter { var defaultValue = 0 val valValue = 0 private var ...

  4. jqGrid使用方法

    1.下载文件 下载jqGrid的软件包,下载地址为:http://www.trirand.com/blog/?page_id=6 下载jQuery文件,下载地址为:http://code.jquery ...

  5. Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A. Checking the Calendar(水题)

    传送门 Description You are given names of two days of the week. Please, determine whether it is possibl ...

  6. 强连通分量的Tarjan算法

    资料参考 Tarjan算法寻找有向图的强连通分量 基于强联通的tarjan算法详解 有向图强连通分量的Tarjan算法 处理SCC(强连通分量问题)的Tarjan算法 强连通分量的三种算法分析 Tar ...

  7. 2015年10月份经常使用的linux命令。

    ps -ef |grep  服务名         详细的介绍可以参考此篇博客http://www.cnblogs.com/wangkangluo1/archive/2011/09/23/218593 ...

  8. javascript变量、作用域和内存问题......

    1基本类型是指那些保存在栈内存的简单数据段,引用类型是指那些保存在堆内存中的对象,变量中保存的实际上只是一个指针. 2javascript中5种基本数据类型Undefined,Null,Boolean ...

  9. 2 NFS高可用解决方案之NFS的搭建

    preface 我们紧接着上一篇博文的基础(drbd+heartbeat的正常工作,http://www.cnblogs.com/liaojiafa/p/6129499.html)来搭建NFS的服务. ...

  10. MooseFs-分布式文件系统系列(二)之安装总结

    preface 上篇博客写了如何安装MFS,那么现在就说说经验总结把 安装方式有源码和yum安装,在官网地址:https://moosefs.com/download/centosfedorarhel ...