php课程 12-39 继承中parent的作用是什么

一、总结

一句话总结:PHP5中使用parent::来引用父类的方法。parent:: 可用于调用父类中定义的成员方法。 parent::的追溯不仅于直接父类。

1、对象链实例?

1.document.body.style.background='#f00';
2.$('.img').show().click(func);
3.$obj->show()->say()->eat()->click();

2、php对象链如何实现?

每个方法中都把$this对象返回了

14     function eat(){
15 echo '<h1>eat</h1>';
16 return $this;
17 }

3、php中的类如何直接调用类里面的方法?

是双冒号调用

类只能去直接调用没有$this(对象的属性,比如方法中要用到属性)的方法,因为没有对象,也就是没有$this
Person::say()

4、如何解决父亲儿子继承父亲之后构造函数重用不够彻底的情况?

在儿子的构造函数中调用父亲的构造函数
parent::__construct($n,$a,$s);

二、继承中parent的作用是什么

1、相关知识

构造方法:
1.__construct();
2.Person(); #如果有一个方法名字与类名相同,则该方法为构造方法

析构方法:
1.__destruct();
2.析构时变量从下往上删

对象链:
1.document.body.style.background='#f00';
2.$('.img').show().click(func);
3.$obj->show()->say()->eat()->click();

属性的作用域:
1.属性的作用域
2.局部变量的作用域

通过类名直接调用方法:
Person::say();  #前提是say方法中不能出现$this本对象

继承特性:
class It extends Person{
    //代码
}

继承关键字:
1.extends
2.parent

封装特性:
1.public
2.protected
3.private

 

2、代码

extends中parent的作用

 <?php
class Person{
public $name; public function __construct($n,$a,$s){
$this->name=$n;
$this->age=$a;
$this->sex=$s;
} public function say(){
echo "<h1>我的名字是: $this->name</h1>";
}
} class It extends Person{
public $program; public function __construct($n,$a,$s,$p){
parent::__construct($n,$a,$s);
$this->program=$p;
} public function develop(){
echo "<h1>{$this->name}正在开发{$this->program}项目</h1>";
}
} $obj=new It('小金',20,'nan','PHP'); $obj->say();
$obj->develop();
?>

对象链实现原理

 <?php
class Person{
public $name; function __construct($n){
$this->name=$n;
} function say(){
echo '<h1>say</h1>';
return $this;
} function eat(){
echo '<h1>eat</h1>';
return $this;
} function sleep(){
echo '<h1>sleep</h1>';
}
} //对象链原理
$obj=new Person('user1');
$obj->say()->eat()->sleep();
?>
 

php课程 12-39 继承中parent的作用是什么的更多相关文章

  1. 妙味css3课程---1-2、css3中新增的伪类和伪元素有哪些

    妙味css3课程---1-2.css3中新增的伪类和伪元素有哪些 一.总结 一句话总结: 1.div:target{}是什么意思? 比如a标签的锚点链接到div,div:target{}就可以找到这个 ...

  2. Linux课程---12、linux中内存指令(top命令的作用是什么)

    Linux课程---12.linux中内存指令(top命令的作用是什么) 一.总结 一句话总结: top实时观察进程.内存和CPU情况 1.电脑出现反应慢情况,最先想到的是什么? 内存 2.linux ...

  3. thinkphp3.1课程 1-2 thinkphp中入口文件的实质是什么

    thinkphp3.1课程 1-2 thinkphp中入口文件的实质是什么 一.总结 一句话总结:在thinkphp中,我们访问的始终是入口文件,并没有主动去访问任何一个其他文件,只不过在入口文件体内 ...

  4. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

  5. bootstrap课程12 滚动监听如何实现(bootstrap方式和自定义方式)

    bootstrap课程12 滚动监听如何实现(bootstrap方式和自定义方式) 一.总结 一句话总结:通过监听滚动的高,判断滚动的高是否大于元素距离顶端的距离 1.如何知道屏幕滚动的高? st=$ ...

  6. php课程 10-34 目录遍历中的注意事项是什么

    php课程 10-34 目录遍历中的注意事项是什么 一.总结 一句话总结:用scandir,会把目录和文件放到一个数组中. 1.移动文件怎么实现,php里面没有移动文件这个函数? 先复制,再删除 2 ...

  7. python语言中多继承中super调用所有父类的方法以及要用到的MRO顺序

    在python多继承中,利用super().父类方法,可以调用所有父类,从而在重写的状态下,再次对所有父类的调用! 例: print("******多继承使用super().__init__ ...

  8. C++ //继承中构造和析构顺序

    1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class Base 6 { 7 pu ...

  9. C++ //继承中的对象模型 //利用开发人员命令提示工具查看对象模型 //父类中所有非静态成员属性都会被 子类继承下去 //父类中私有成员属性 是被编译器给隐藏了 因此是访问不到 但是确实被继承下去了

    1 //继承方式 2 //语法:class 子类 :继承方式 父类 3 //继承方式 三种: 4 //1.公共继承 5 //2.保护继承 6 //3.私有继承 7 8 /* 9 #include &l ...

随机推荐

  1. 常量成员函数的注意事项 & mutable的使用场景

    mutable的使用场景: 可以在一个const的对象里面,解除对部分字段的const限制.也可以用在const成员函数里面. 对于const与否,一般会调用不同版本的函数: 而对于二元操作符,如果用 ...

  2. flash3D学习1

    今天正式学习flash3D. 先配置: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0 ...

  3. OC便利方法

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { #if //    从面向对象的角度 ...

  4. 网易2016研发project师笔试题

    网易2016研发project师笔试题 2015/12/9 11:25(网上收集整理的,參考答案在后面,若有错误请大神指出) 1. 运行指令find / -name "test.c" ...

  5. mysql通过DATE_FORMAT将错误数据恢复

    因为如今新开发项目,同事造数据的时候,将时间类型格式造成"20150708".可是实际希望的数据格式是:"2015-07-08" . 数据库使用的是mysql. ...

  6. libsvm 的使用

    1. libsvm 支持的SVM模型 官网地址:LIBSVM – A Library for Support Vector Machines libsvm 支持的 SVM 模型如下(C:classif ...

  7. Redis的安装与启动(doc和本地客户端)

    官网 安装都是老生长谈了(这个也不错),这里推荐俩个文章看看把.:打开一个cmd窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.conf(安装的关键 ...

  8. @Html.Raw() 方法输出带有html标签的字符串

    @Html.Raw() 方法输出带有html标签的字符串,如:@Html.Raw("<div style='color:red'>输出字符串</div>") ...

  9. U-BOOT启动流程分析--start_armboot函数(二)

    第二阶段的功能: 初始化本阶段所需的硬件设备(主要设置系统时钟.初始化串口.Flash.网卡.USB) 检测系统内存映射(memory map) 将内核映像和根文件系统映象从Flash上读到RAM空间 ...

  10. jQuery获取区间随机数

    1.自定义函数 function getRandom(min,max){    //x上限,y下限    var x = max;    var y = min;    if(x<y){     ...