=========================================
*                 继承 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. java字符串拼接与性能

    使用 Concatenation Operator (+) String concat method – concat(String str) StringBuffer append method – ...

  2. 【原】redux学习笔记

    上周学习了flux,这周研究了一下redux,其实很早之前都已经在研究他们了,只是之前一直没搞懂,最近这两周可能打通了任督二脉,都算入门了. 写博客的目的主要是做一下笔记,总结一下思路,以及和大家交流 ...

  3. MyISAM与InnoDB两者之间怎么选择

    1.MyISAM不支持事务,InnoDB是事务类型的存储引擎 当我们的表需要用到事务支持的时候,那肯定是不能选择MyISAM了. 2.MyISAM只支持表级锁,BDB支持页级锁和表级锁默认为页级锁,而 ...

  4. css013 构建基于浮动的布局

    css013 构建基于浮动的布局 基于浮动的布局时利用float属性是网页上的元素并排,并创建列 float有三个值:left .right .none 1.假设要把一张图片浮动到网页的左侧 .flo ...

  5. 关于软件工程结对编程作业 PairProject : Elevator Scheduler(电梯调度算法的实现与测试)的总结

    1)结对编程队友 1106xxxx 张扬 1106xxxx 杨军 其中,此项目的编程实现主要由前者完成. 2)关于结对编程 结对编程的优点: 最直接的一点:在结对编程中,由于有另一个人在你身边和你配合 ...

  6. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【七】——实现资源的分页

    系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这篇文章我们将使用不同的方式实现手动分页(关于高端大气上档次的OData本文暂不涉及,但有可 ...

  7. zepto.js的事件处理

    能够深入理解zepto对事件的处理,那么整个JS的事件处理就应该差不多合格了,事件处理是JS语言的一个难点. 1. 首先来看$.event函数. JS中有很多事件,都是已经定义好了,我们直接调用就可以 ...

  8. div文字超出

    效果一:div文字超出处理 <div style="width:200px; white-space:nowrap;overflow:hidden;text-overflow:elli ...

  9. C# 获取进程或线程的相关信息

    信息来自: http://blog.163.com/kunkun0921@126/blog/static/169204332201293023432113/ using System; using S ...

  10. autofac获取全局Container

    _UserService = ((IContainerProviderAccessor)HttpContext.Current.ApplicationInstance).ContainerProvid ...