Php面向对象 – 继承和重写
Php面向对象 – 继承和重写
承受:
php于,通过类。使用特殊的经营宗旨。
通过定义类,采用extends来表示当前的类对象继承该类的对象。
样例:
class C
{
public $p_c = “value c”;
}
class D extends C
{
public $p_d = “value d”;
}
$o = new D;
var_dump($o->p_c)
var_dump($o->p_d)
输出:string(7) “value c” string(7)“value d”
继承,指的是两个对象之间,那么哪有这两个对象?
Instanceof 操作符 (推断对象是否是某类的实例)
var_dump($o instanceof D);
输出:bool(true)
var_dump($o instanceof C);
输出:bool(true)
因此,一个对象即是当前类的实例,也是该类所继承类的实例。
Class D extends C
D类对象,继承自C类对象。
父类:被继承的类,C类
子类:须要继承的类,D类
基类:C类是D类的基类
扩展类:D类是C类的扩展类。
重要:
php是单继承。
继承的目的:
在于扩展,或者使用某类已经存在的操作和数据。
重写 override
继承时,假设发生成员冲突,php的处理方式。为重写。就是子类同名成员覆盖父类同名成员。不能看到父类的同名成员。
样例:
1.
class P
{
public $name = ‘P’;
}
class C extends P
{
public $name = “C”;
}
$o = new C;
echo $o->name;
2.
class P
{
public $name = ‘P’;
public function sayName()
{
echo‘parent::name’,$this->name;
}
}
class C extends P
{
public $name = “C”;
public function sayName()
{
echo‘self::name’,$this->name;
}
}
$o = new C;
$o->sayName();
输出:self::name C
构造方法重写:
样例:
class P
{
public__construct()
{
echo“parent::construct”;
}
}
class D extends P
{
public__construct()
{
echo“self::construct”;
}
}
$o =new D;
输出:self::construct
假设须要,强制运行被重写的父类方法,能够显示的使用父类来调用对应的父类方法就可以:
样例:
class P
{
public__construct()
{
echo“parent::construct”;
}
}
class D extends P
{
public__construct()
{
P::__construct();
echo“self::construct”;
}
}
$o =new D;
输出:parent::construct self::construct
能够使用一个keyword。在类内。取代当前的父类
parentkeyword
样例:
class P
{
public__construct()
{
echo“parent::construct”;
}
}
class D extends P
{
public__construct()
{
parent::__construct();
echo“self::construct”;
}
}
$o =new D;
假设说父类的构造须要对应的參数,则须要在调用时,将父类构造方法须要的參数传递到方法内。
样例:
class Goods
{
public $goods_name ;
public $goods_price;
public function __construct($name,$price)
{
$this->goods_name= $name;
$this->goods_price= $price;
}
}
class GoodsBook extends Goods
{
public $pages;
public function __construct($name,$price,$pages)
{
parent::__construct($name,$price);
$this->pages= $pages;
}
}
版权声明:本文博主原创文章。博客,未经同意不得转载。
Php面向对象 – 继承和重写的更多相关文章
- OC面向对象—继承
OC面向对象—继承 一.基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). ...
- Java面向对象 继承(上)
Java面向对象 继承 知识概要: (1)继承的概述 (2)继承的特点 (3)super关键字 (4)函数覆盖 (5) 子类的实例化过程 (6) final关键字 (1)继承 ...
- Javascript 面向对象-继承
JavaScript虽然不是面向对象的语言,但是我们通过构造可以让其支持面向对象,从而实现继承.重写等面向对象的特性.具体代码如下: //创建类Person function Person(age,n ...
- 面向对象 继承 抽象类 接口 static 权限修饰符
Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...
- C#和Java的类、继承、重写与多态
面向对象的三大特性是封装.继承.多态,C#和Java都是面向对象的语言所以他们的类.继承.重写与多态有很多共同点,但是实现上也存在一定的区别.其中Java中其实没有虚函数的概念,也可以认为Java的函 ...
- 【转载】 C++多继承中重写不同基类中相同原型的虚函数
本篇随笔为转载,原文地址:C++多继承中重写不同基类中相同原型的虚函数. 在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: ...
- 面向对象继承实例(a如何继承b)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- js面向对象继承
前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2 ...
- Java面向对象 继承(下)
Java面向对象 继承(下) 知识概要: (1)抽象类 1.1 抽象类概述 1.2 抽象类的特点 ...
随机推荐
- Eclipse 在线安装fat jar插件
在线安装步骤: eclipse菜单栏 help >software updates >Search for new features to install>new update si ...
- mac开启22port
mac开启22port 选择System prefrence -> sharing , 将remote login打开 測试是否打开 import socket s = socket.socke ...
- jquery 如何动态绑定传递到后台上传组件参数
$("#upload_photo").uploadify({ 'auto' : false, 'method' : "post", 'height' : 20, ...
- C++ Primer 学习笔记_40_STL实践与分析(14)--概要、先来看看算法【上】
STL实践与分析 --概述.初窥算法[上] 标准库容器定义的操作很少.并没有给容器加入大量的功能函数.而是选择提供一组算法,这些算法大都不依赖特定的容器类型,是"泛型"的. ...
- Android 设计模式模式适配器
自定义适配器模式:一类的接口,转换成客户的期望,也是一个接口.适配器使原本接口不是与类兼容可以无缝.下面两个图看起来更加清晰 watermark/2/text/aHR0cDovL2Jsb2cuY3Nk ...
- Sql Server远程查询db 表中的数据,以本地
step 1: sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure 'Ad Hoc Distributed Queri ...
- C#使用SqlBulkCopy将DataTable写入数据库的表中(表不存在则创建新表,数据存在则更新,不存在则插入)
原文:.net使用SqlBulkCopy导入数据(创建新表) .net2.0后ado.net提供了一个快速导入sqlserver的方法sqlbulkcopy.导入效率非常高. 包装了一个简单的sql ...
- 英特尔® 硬件加速执行管理器安装指南 — Microsoft Windows*
介绍 本文将指导您安装英特尔® 硬件加速执行管理器(英特尔® HAXM),这是一款可以使用英特尔® 虚拟化技术(VT)加快 Android* 开发速度的硬件辅助虚拟化引擎(管理程序). 前提条件 英特 ...
- Error Code: 1318. Incorrect number of arguments for PROCEDURE company.new_procedure; expected 2, got
1.错误叙述性说明 20:27:34 call new_procedure(20150112) Error Code: 1318. Incorrect number of arguments for ...
- eclipse设备SVN插入
原文:http://www.cnblogs.com/ruiati/p/3584120.html 1.下载最新的Eclipse.我的版本号是3.7.2 indigo(Eclipse IDE for Ja ...