Parent 关键字|学习笔记

简介: 快速学习 Parent 关键字

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第二阶段Parent 关键字】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/712/detail/12694


Parent 关键字


主要内容:

一、概念

二、步骤

三、示例

 

可以重写子类和重写父类,重写了父类后发现子类只会调用自己的想让父类被重写后能够再次被访问的方式就要用到 parent 关键字,所有本章的目标就是理解重写后的访问原理实现 parent 实现被重写的父类成员的访问。一般情况下,成员属性被重写后就会被覆盖。

 

一、概念

1.Parent 关键字是一种明确访问父类成员的表达方式,parent 关键字用于再被重写的子类方法中居多,明确访问父类被重写成员。

2.Parent 可以访问父类静态属性、静态方法、类常量和普通方法

3.parent 使用范围解析操作符访问,前面有讲过解析操作符。Parent 可以访问类,但访问的是父类。

 

二、步骤

1.子类继承父类

2.子类重写父类方法

3.子类重写的方法还需要用到父类的方法,发现方法不够就要把父类方法拿过来,明确需要访问的父类成员

4.使用 parent 访问父类方法。

 

三、示例

来看例子,目前有一个需求,父类为数据库初始化类,数据库初始化类就是数据库已经做好了,子类为针对表的业务类,每张表就对应一个类,一个类就负责这张表的增删改查。子类继承父类,但是子类可能也有资源要初始化,需要重写父类的构造方法,但是一旦重写父类,父类的构造方法就不会改变,那父类数据库的初始化就做不了了。

比如说现在有一个DB 类,这是数据库初始化类,link属性直接初始化,然后加上一个 echo 证明他的存在。然后一个子类叫 table 类去继承父类,它也有自己的构造方法,但是他必须要让前一个构造方法执行,要让两个构造方法连接,此时要用到 parent 关键字。

代码如下

<?php

#Parent 关键字

class DB{

protected Slink;

public function construct(){

Sthis->1ink = mysq1i_connect(localhost""root'root''db_2'3306') or die('数据

库连接失败!');

echo_METHOD_

class Table extends DB{

# 重写父类方法

public function_construct(){

#让父类构造方法先执行

parent::__construct();

# 执行其他

Echo METHOD:

父类有了,子类也有了,重写了父类的构造方法,这也就意味着,把它实实例。可以看到table 的可以调用,而父类的永远无法调用,因为这个方法被子类已经重写过了,所有子类调用时都调用的子类的构造方法。此时如果要操作数据库,因为没有初始化,所有操作不了,这时使用parent 关键字,先执行父类的构造方法,再执行子类的构造方法,不会凌驾于父类的操作之上。一般父类的构造方法能提供资源才会用 parent ,如果不能则不需要用,这就是parent 的作用。

静态属性重写后,需要再自爱中进行访问需要用到 parent 来实现,因为重写的时候并没有覆盖之前的属性,在这加上 public statia ¥level=1,再加上 public statia ¥level=2,如果要用, 再增加一个方法,#访问父类的静态成员,前提是被重写,echo self 类名假 level2,发现确实访问的是自己的self,那如果访问的是父类,拿在这里加上一个parent,那么此时得到的是1,访问的是父类的,所有凡是被重写的成员,都可以使用 parent 进行访问。

做个小结,如果不想要访问父类的构造就不需要重写,如果要在普通的方法里面访问父类也可以,但是不符合业务,parent 的加之就是解决重写冲突的问题,一般只会在重写的方法里面使用 parent,parent 也可以访问静态的属性,可以重写,但不会被覆盖,但是不能用于访问父类的属性,因为父类的属性被重写后会被覆盖,就不存在了,普通的就直接使用就行,不需要使用 parent 关键字,使用的是范围使用操作解析,它更偏向于方法和类的调用,而不是对象的属性。

相关文章
|
11月前
|
Python
pyqt6 制作一个颜色调节器 01
本文介绍了一个使用 PyQt 制作的颜色调节器,通过滑动滚动条或旋钮来调整 RGB 三色,实现颜色的微调。具体步骤包括:1. 设计 UI 页面;2. 分析颜色调整逻辑;3. 将数据反馈到 UI 页面。最终实现了颜色随滑块变化而实时更新的效果。
267 1
|
数据采集 监控 数据挖掘
CDGA|金融科技变革下的数据治理怎么做?
未来,随着技术的不断进步和监管环境的逐步完善,金融科技企业将在数据治理与合规方面取得更大突破,实现稳健发展。数据治理将成为金融科技企业的核心竞争力之一,为金融行业的健康发展保驾护航。
CDGA|金融科技变革下的数据治理怎么做?
|
11月前
|
存储 SQL 缓存
AnalyticDB 实时数仓架构解析
AnalyticDB 是阿里云自研的 OLAP 数据库,广泛应用于行为分析、数据报表、金融风控等应用场景,可支持 100 trillion 行记录、10PB 量级的数据规模,亚秒级完成交互式分析查询。本文是对 《 AnalyticDB: Real-time OLAP Database System at Alibaba Cloud 》的学习总结。
272 1
|
12月前
|
异构计算
请拥有edu邮箱的同学来领取专(免)属(费)GPU!
300小时免费GPU等你来领!魔搭GPU资源福利社,为你注入动力!
《黑神话:悟空》中的物理模拟与碰撞检测技术解析
【8月更文第26天】《黑神话:悟空》是一款备受期待的动作角色扮演游戏,以其精致的画面和丰富的物理效果而闻名。为了实现游戏中的真实感和互动性,开发团队使用了先进的物理引擎和碰撞检测系统。本文将深入探讨《黑神话:悟空》中的物理模拟与碰撞检测技术,并通过一些伪代码示例来展示其实现细节。
517 0
|
程序员 C语言
【C语言】while循环语句
【C语言】while循环语句
817 3
软链接,创建软链接,可以将文件和文件夹链接到其他位置,使用ln -s 被链接的文件或文件夹 建立软链接的地方,ls可以查看全部文件,pwd可以查看当前文件地址,~代表home目录,ls -l可以查链接
软链接,创建软链接,可以将文件和文件夹链接到其他位置,使用ln -s 被链接的文件或文件夹 建立软链接的地方,ls可以查看全部文件,pwd可以查看当前文件地址,~代表home目录,ls -l可以查链接
STM32CubeMX配置时钟无法使用高速外部时钟HSE
STM32CubeMX配置时钟无法使用高速外部时钟HSE
871 0
|
安全 数据安全/隐私保护 C++
Qt C++ 键盘事件全解析:从基础到高级,实现精彩互动体验
Qt C++ 键盘事件全解析:从基础到高级,实现精彩互动体验
2256 0
|
Linux 应用服务中间件 网络安全
CentOS 安装 lrzsz 上传(rz)和下载(sz)文件(Mac 与 Windows)
CentOS 安装 lrzsz 上传(rz)和下载(sz)文件(Mac 与 Windows)
1361 0