1.执行结果

成员名

成员修饰符

方法名

方法修饰符

执行结果

name

private

setName

private

在构造函数函数中执行父类私有方法,子类未能覆盖private成员变量和方法,修改父类的私有变量

age

private

setAge

public

修饰符是public,子类方法覆盖父类方法,修改子类成员变量。但在父类构造其中执行$this->age只能取到父类的age

local

public

setLocal

public

子类的方法和成员变量均覆盖了父类对应方法和成员变量

hoby

public

setLocal

private

成员变量被覆盖,当是方法未覆盖

2.相关代码

ParentClass.php

<?php
class ParentClass {
private $name;
private $age;
public $local;
public $hoby;
public function __construct() {
print "execute parent construct()<br/>";
$this->setName ();
echo ("name=" . $this->name . "<br/>"); $this->setAge ();
echo ("age=" . $this->age . "<br/>"); $this->setLocal ();
echo ("local=" . $this->local . "<br/>"); $this->setHoby ();
echo ("hoby=" . $this->hoby . "<br/>");
$this->__toString();
}
private function setName() {
$this->name = "parentName";
print "parent setName()\n ";
}
public function setAge() {
$this->age = 50;
print "parent setAge()\n";
}
public function setLocal() {
$this->local = "parent local";
print "parent setLocal()\n";
}
private function setHoby() {
$this->hoby = "parent hoby";
print "parent setHoby()\n";
} public function __toString() {
echo ("Parent[name=" . $this->name . ", age=" . $this->age . ", local=" . $this->local . ", hoby=" . $this->hoby . "]<br>");
}
} ?>
ChildClass.php
<?php
require_once 'ParentClass.php';
class ChildClass extends ParentClass {
private $name;
private $age;
public $local;
public $hoby;
public function __construct() {
print "execute child construct()<br/>";
parent::__construct ();
echo $this->__toString();
}
private function setName() {
$this->name = "childName";
print "child setName()\n";
}
public function setAge() {
$this->age = 20;
print "child setAge()\n";
}
public function setLocal() {
$this->local = "child local";
print "child setLocal()\n";
}
private function setHoby() {
$this->hoby = "child hoby";
print "child setHoby()\n";
}
public function __toString() {
echo ("Child[name=" . $this->name . ", age=" . $this->age . ", local=" . $this->local . ", hoby=" . $this->hoby . "]<br/>");
}
} $child = new ChildClass ();
?>

3.执行输出

execute child construct()
execute parent construct()
parent setName() name=parentName
child setAge() age=
child setLocal() local=child local
parent setHoby() hoby=parent hoby
Child[name=, age=20, local=child local, hoby=parent hoby]
Child[name=, age=20, local=child local, hoby=parent hoby]

PHP class 继承的更多相关文章

  1. javaScript的原型继承与多态性

    1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...

  2. JavaScript的继承实现方式

    1.使用call或apply方法,将父对象的构造函数绑定在子对象上 function A(){ this.name = 'json'; } function B(){ A.call(this); } ...

  3. javascript中的继承与深度拷贝

    前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...

  4. 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  5. JS继承类相关试题

    题目一: //有关于原型继承的代码如下:function Person(name) {   this.name = name;}Person.prototype = {     getName : f ...

  6. JS继承之寄生类继承

    原型式继承 其原理就是借助原型,可以基于已有的对象创建新对象.节省了创建自定义类型这一步(虽然觉得这样没什么意义). 模型 function object(o){ function W(){ } W. ...

  7. JS继承之借用构造函数继承和组合继承

    根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...

  8. JS继承之原型继承

     许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...

  9. 深入浅出JavaScript之原型链&继承

    Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...

  10. 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型

    前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.

随机推荐

  1. WinForm---进度条的实现方法

    (转自:http://www.cnblogs.com/Sue_/articles/2024932.html) 看了好几个WinForm程序了,发现他们对进度条的处理完全失去了进度条的作用.他们都是采用 ...

  2. docker 部署一个 aspnetmvc 程序

    准备mvc的程序[asp.net mvc5 网站]  使用刚才创建的镜像,并把上诉文件目录挂载到iis指定磁盘docker run -d -p 83:80 --name docker-drgs -v  ...

  3. UI- 五种手势识别总结

    #pragma mark - 手势  总共有五种手势  分别为 Tap点击 Pan拖拽 LongPress长时间按压 Pinch捏合手势 rotation旋转 1. 定义成员变量 UIImageVie ...

  4. C# 为什么用接口实例化一个实现该接口的类?

    这是多态的体现. 首先接口不能实例化的. 实现接口的类 实例 = new 实现接口的类()// 这样用不好吗? //这样已经不是好不好的问题了,这样的话,要接口有什么用?//用接口就是让实例和实现类的 ...

  5. Android 进阶10:进程通信之 Messenger 使用与解析

    读完本文你将了解: Messenger 简介 Messenger 的使用 服务端 客户端 运行效果 使用小结 总结 代码地址 Thanks 前面我们介绍了 AIDL 的使用与原理,这篇文章来介绍下 A ...

  6. 抽象类,接口类,封装,property,classmetod,statimethod

    抽象类,接口类,封装,property,classmetod,statimethod(类方法,静态方法) 一丶抽象类和接口类 接口类(不崇尚用) 接口类:是规范子类的一个模板,只要接口类中定义的,就应 ...

  7. html调bug

    F12-->Sources-->相应文件-->找有波浪线

  8. [qt][问题记录] 无法定位程序输入点 _ZdaPvj 于动态链接库 libstdc++-6.dll

    无法定位程序输入点 _ZdaPvj 于动态链接库 libstdc++-6.dll 该问题是没有打包库的问题,之所以出现这个问题的是直接用系统自带的命令行使用qt的windeployqt命令导致提供的库 ...

  9. fileUtil文件的上传下载

    package com.beisun.mbp.util; import java.io.BufferedInputStream;import java.io.BufferedOutputStream; ...

  10. JavaScript 冒号(:)详解

    1.switch语句分支 2.?:三元表达式的false 3.声明对象直接量的成员 4.声明标签 1和2相信地球人都知道吧?如果有人不知道,那我改成地球上的程序员都知道,哈哈 3.对象直接量我们也经常 ...