PHP基础之 继承(一)
=========================================
* 继承 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基础之 继承(一)的更多相关文章
- 二十二. Python基础(22)--继承
二十二. Python基础(22)--继承 ● 知识框架 ● 继承关系中self的指向 当一个对象调用一个方法时,这个方法的self形参会指向这个对象 class A: def get(s ...
- 第二十八节:Java基础-进阶继承,抽象类,接口
前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- 三、Java基础---------关于继承、构造函数、静态代码块执行顺序示例讲解
在上节博客中曾提到过类的继承,这篇文章主要是介绍类的继承.构造函数以及静态代码块的执行顺序. 首先接着分析在黑马基础测试中的一个关于继承的题目,题目描述如下: 声明类Person,包含2个成员变量:n ...
- JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)
实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...
- 【Java基础】继承的一些总结
什么是继承 把一些类的具有共性的东西剥离出来形成一个新的类,然后各个其他类保留自己独有的特性,并用关键字extends继承这个剥离出来的新的类,可以最终达到各类原始相同效果,但是在每个类中,单用一个“ ...
- Java基础08 继承
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 继承(inheritance)是面向对象的重要概念.继承是除组合(composit ...
- C++基础——类继承中方法重载
一.前言 在上一篇C++基础博文中讨论了C++最基本的代码重用特性——类继承,派生类可以在继承基类元素的同时,添加新的成员和方法.但是没有考虑一种情况:派生类继承下来的方法的实现细节并不一定适合派生类 ...
- Python基础之继承与派生
一.什么是继承: 继承是一种创建新的类的方式,新建的类可以继承一个或过个父类,原始类成为基类或超类,新建的类则称为派生类 或子类. 其中,继承又分为:单继承和多继承. class parent_cla ...
- Python设计模式 - 基础 - 封装 & 继承 & 多态
面向对象的核心是对象,世间万物都可以看作对象,任何一个对象都可以通过一系列属性和行为来描述,可以包含任意数量和类型的数据或操作.类是用来描述具有相同属性和方法的所有对象的集合.类通常是抽象化的概念,而 ...
随机推荐
- Web 使用PostMan提交特殊格式数据
使用PostMan 选择POST模式中的RAW模式 然后点击Headers添加Content-Type 类型比如是 application/json 然后就可以在body中以Json格式上传数据了 前 ...
- XmlReader读取XML
StringBuilder output = new StringBuilder(); String xmlString = @"<bookstore> <book gen ...
- Scala类基础
最近在开始学习Scala,本篇文章我们来讲解一下Scala中类的使用 class Counter { var defaultValue = 0 val valValue = 0 private var ...
- jqGrid使用方法
1.下载文件 下载jqGrid的软件包,下载地址为:http://www.trirand.com/blog/?page_id=6 下载jQuery文件,下载地址为:http://code.jquery ...
- 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 ...
- 强连通分量的Tarjan算法
资料参考 Tarjan算法寻找有向图的强连通分量 基于强联通的tarjan算法详解 有向图强连通分量的Tarjan算法 处理SCC(强连通分量问题)的Tarjan算法 强连通分量的三种算法分析 Tar ...
- 2015年10月份经常使用的linux命令。
ps -ef |grep 服务名 详细的介绍可以参考此篇博客http://www.cnblogs.com/wangkangluo1/archive/2011/09/23/218593 ...
- javascript变量、作用域和内存问题......
1基本类型是指那些保存在栈内存的简单数据段,引用类型是指那些保存在堆内存中的对象,变量中保存的实际上只是一个指针. 2javascript中5种基本数据类型Undefined,Null,Boolean ...
- 2 NFS高可用解决方案之NFS的搭建
preface 我们紧接着上一篇博文的基础(drbd+heartbeat的正常工作,http://www.cnblogs.com/liaojiafa/p/6129499.html)来搭建NFS的服务. ...
- MooseFs-分布式文件系统系列(二)之安装总结
preface 上篇博客写了如何安装MFS,那么现在就说说经验总结把 安装方式有源码和yum安装,在官网地址:https://moosefs.com/download/centosfedorarhel ...