=========================================
*                 继承 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. mongoDB在centos7上的安装

    1,下载安装包 下载MongoDB的安装文件 地址:https://www.mongodb.org/downloads#production 选择Linux 64-bit legacy 版本,下载到目 ...

  2. hibernate......1、2级缓存

    1.什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能.Hibernate在 ...

  3. python 动态调用模块、类、方法(django项目)

    需求:近一段时间基于django框架,开发各业务层监控代码,每个业务的监控逻辑不同,因此需要开发监控子模块,动态的导入调用. 项目名称:demo_django App:common_base.moni ...

  4. wpf 前台获取资源文件路径问题

    1 <ImageBrush ImageSource="YT.CM.CommonUI;component/Resource/FloadwindowImage/middle.png&quo ...

  5. Ubuntu系统安装(win7双系统)

    ubuntuan安装 1.安装方法及工具 1. 安装方法介绍 本人采用的是LiveUSB安装方法,也就是通常所说的U盘安装. 2.工具 硬件工具:U盘,华硕A53s电脑(我的是win7系统) 软件工具 ...

  6. IBatis 批量插入数据

    sql语句 <!--批量插入待收流水--> <insert id="BatchInsertOrder" parameterClass="ArrayLis ...

  7. CentOS7安装Ambari

    环境: CentOS7安装两个节点:master.slave1.并配置ssh无密码登录. 步骤: 获取 Ambari 的公共库文件(public repository): wget http://pu ...

  8. geoip scala api

    #!/bin/bash /home/hadoop/spark-1.6.2/bin/spark-shell --master spark://hbase11:7077 --executor-memory ...

  9. SQL语句注入

    1:       select *from user where username='admin' and password='123456'  or 1='1';    万能密码 2:       ...

  10. JavaWeb学习笔记——DAO设计模式