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面向对象 – 继承和重写的更多相关文章

  1. OC面向对象—继承

    OC面向对象—继承 一.基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). ...

  2. Java面向对象 继承(上)

       Java面向对象 继承 知识概要:         (1)继承的概述 (2)继承的特点 (3)super关键字 (4)函数覆盖 (5) 子类的实例化过程 (6) final关键字 (1)继承 ...

  3. Javascript 面向对象-继承

    JavaScript虽然不是面向对象的语言,但是我们通过构造可以让其支持面向对象,从而实现继承.重写等面向对象的特性.具体代码如下: //创建类Person function Person(age,n ...

  4. 面向对象 继承 抽象类 接口 static 权限修饰符

    Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...

  5. C#和Java的类、继承、重写与多态

    面向对象的三大特性是封装.继承.多态,C#和Java都是面向对象的语言所以他们的类.继承.重写与多态有很多共同点,但是实现上也存在一定的区别.其中Java中其实没有虚函数的概念,也可以认为Java的函 ...

  6. 【转载】 C++多继承中重写不同基类中相同原型的虚函数

    本篇随笔为转载,原文地址:C++多继承中重写不同基类中相同原型的虚函数. 在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: ...

  7. 面向对象继承实例(a如何继承b)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. js面向对象继承

    前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2 ...

  9. Java面向对象 继承(下)

     Java面向对象   继承(下) 知识概要:               (1)抽象类 1.1 抽象类概述                            1.2 抽象类的特点       ...

随机推荐

  1. ubuntu10.10和windows双系统启动顺序的修改

    我想大部分童鞋装ubuntu的时候,硬盘上的windows肯定还是保留着的,启动电 脑时可以选择,想进windows就进windows,想进ubuntu就进ubuntu.但装完ubuntu后,它默认启 ...

  2. java程序开发代写(QQ:928900200)

    条件:手机1.2都是安卓智能机,手机1开热点,手机2链接手机1,功能:A手机2通过刷手机网页,登陆手机1设定的页面并下载其手机的指定文件,B手机1控制手机2的流量,当通过的流量多的时候,停止流量的供应

  3. UVA 674 (入门DP, 14.07.09)

     Coin Change  Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We ...

  4. MQTT学习笔记——Yeelink MQTT维修 采用mqtt.js和paho-mqtt

    0 前言     2014年8月yeelink推出基于MQTT协议的开关类型设备控制API.相比于基于HTTP RESTful的轮训方式,通过订阅相关主题消息,能够远程控制类应用实时性更好. 本文使用 ...

  5. JavaScript获取路径

    JavaScript获取路径 1.设计源代码 <%@ page language="java" import="java.util.*" pageEnco ...

  6. hadoop-1.1.2 在Windows环境下的部署

    1:先安装Cygwin 参考http://blog.csdn.net/wind520/article/details/9223003 2:下载 3:解压在C:\cygwin\hadoop1 4:配置 ...

  7. 乐在其中设计模式(C#) - 状态模式(State Pattern)

    原文:乐在其中设计模式(C#) - 状态模式(State Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 状态模式(State Pattern) 作者:webabcd 介绍 允 ...

  8. 使用order by和rownum时特别注意

    起因 在项目中有用到某表作为数据来源,在页面以列表的形式显示.使用的数据库是Oracle,分页的时候使用到了rownum这个关键字.列表有排序功能,自然也用到了order by.接下来问题出现了,我在 ...

  9. 升级iOS8系统后,保险箱Pro、私人保险箱、私密相冊打开就闪退的官方解决方式

    升级iOS8系统后,保险箱Pro.私人保险箱.私密相冊打开就闪退的官方解决方式   写在前面的话: 1.   本文适用条件    适用于:您的保险箱Pro.私人保险箱.私密相冊在iPhone或iPad ...

  10. node.js抓取数据(fake小爬虫)

    在node.js中,有了 cheerio 模块.request 模块,抓取特定URL页面的数据已经非常方便. 一个简单的就如下 var request = require('request'); va ...