php基础教程 第十一步 面向对象补充

继承

上一节中学习了php类,以及类方法、类成员变量相关的一些知识,接下来开始学习php类中的继承。本节是上一节的补充。(其实也就是为了保持日更随便发的一篇文)

开始

php继承是继承与父类的所有属性,就像你继承了你父亲的大部分dnf一样。例如小明的爸爸是红色头发、黑色鼻子、蓝色眼睛、圆锥脑袋那么小明也大概率是这个情况。
我们查看以下示例了解在php中如何实现继承:

<?php
class Human {public $sex;public $hair;private function printInfo($val){echo '传入的值是 '.$val.'<br/>';}public function set_Sex($val){$this->printInfo($val);$this->sex=$val;}public function set_Hair($val){$this->hair=$val;}public function get_Sex(){return $this->sex;}public function get_Hair(){return $this->hair;}
}class MutantHuman extends Human{}$SuperMan=new MutantHuman();
$SuperMan->set_Sex('nan');
$SuperMan->set_Hair('y');echo $SuperMan->get_Sex();
echo ' ';
echo $SuperMan->get_Hair();
?>

以上代码示例,由上一节的代码修改而成,主要是新建了一个类并且继承了 Human类:

class MutantHuman extends Human{}

以上类中,类名为 MutantHuman,并且在类名后,使用了 extends 关键字,extends 关键字表示继承于,后面填写继承的类名 Human。也就是说 Human 是它爸爸,MutantHuman有它爸爸的方法以及成员变量。那么意思则是 MutantHuman 可以使用 set_Sex方法和 set_Hair,并且拥有 sex 和hair 成员变量。
所以在新建了 MutantHuman 对象 SuperMan 后,可以使用 set_Sex以及 set_Hair方法:

$SuperMan=new MutantHuman();
$SuperMan->set_Sex('nan');
$SuperMan->set_Hair('y');echo $SuperMan->get_Sex();
echo ' ';
echo $SuperMan->get_Hair();

结果如下:
在这里插入图片描述

方法重写

当子类集成了父类的方法后,可以重写修改该方法,如下示例:

<?php
class Human {public $sex;public $hair;private function printInfo($val){echo '传入的值是 '.$val.'<br/>';}public function set_Sex($val){$this->printInfo($val);$this->sex=$val;}public function set_Hair($val){$this->hair=$val;}public function get_Sex(){return $this->sex;}public function get_Hair(){return $this->hair;}
}class MutantHuman extends Human{public function get_Sex(){echo ' 这是在 MutantHuman 中<br/>';return $this->sex;}
}$SuperMan=new MutantHuman();
$SuperMan->set_Sex('nan');
$SuperMan->set_Hair('y');echo $SuperMan->get_Sex();
echo ' ';
echo $SuperMan->get_Hair();
?>

以上示例中,子类 MutantHuman 已经拥有了父类的方法,可以直接在子类中重写同名的方法,实现不同的特性。毕竟父亲和儿子还是有所不同的。
以上实例中,子类 MutantHuman重写了 get_Sex 方法。重写则是重写一个函数形式与父类同等的方法,修改该方法,使其具有不同的特性。以上重写的方法中,在里面输出了 echo ' 这是在 MutantHuman 中<br/>';。结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS实验教程——实验十五:拓扑关系创建与编辑

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 一、实验描述 1、拓扑关系的概念 拓扑关系是指满足拓扑几何学原理的各空间数据间的相互关系。即用结点、弧段和多边形所表示的实体之间的邻接、关联、包含和连通关系。如:点与点的邻接关系、点与面…

Sql Server 优化 SQL 查询:如何写出高性能SQL语句

1、 首先要搞明白什么叫执行计划&#xff1f; 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案&#xff0c;这个方案是由查询优化器自动分析产生的&#xff0c;比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录&#xff0c;那查询优化器会选择“索引…

【Ubuntu】ubuntu物理机安装方法:wubi

在之前的文章里我们曾经详细介绍了如何在虚拟机里安装ubuntu操作系统&#xff0c;但是一些小伙伴希望在自己的电脑里安装一个ubuntu&#xff0c;来感受一下ubuntu的硬体验。下面给大家介绍一种通过wubi的安装方法。 wubi是 Windows Ubuntu-Based Installer 缩写&#xff0c;是一…

Java之ThreadLocal

1 ThreadLocal接口出现原因 使用ThreadLocal保存当前线程的变量值&#xff0c;这样你想获取该变量的值的时候&#xff0c;获取到的都是本线程的变量值&#xff0c;不会获取到其他线程设置的值&#xff0c;早在JDK 1.2的版本中就提供java.lang.ThreadLocal&#xff0c;ThreadLo…

server如何调用 thrift_Thrift总结(二)如何快速创建自己的RPC服务

前面介绍了thrift 基础的东西&#xff0c;怎么写thrift 语法规范编写脚本&#xff0c;如何生成相关的语言的接口。不清楚的可以看这个《Thrift总结(一)介绍》。做好之前的准备工作以后&#xff0c;下面就开始如何用Thrift写RPC接口。如何用Thrift写RPC接口1. 打开之前下载的thr…

Hello Playwright:(2)简化部署方式

前言上次的文章Hello Playwright&#xff1a;(1)从开发到部署发表后&#xff0c;有网友留言问&#xff0c;有不有简化部署的方式&#xff1a;下面&#xff0c;提供 2 种可行的方案。方案 1. Copy其实 Playwright 默认是到C:\Users\用户名\AppData\Local\ms-playwright文件夹下查…

ArcGIS实验教程——实验十六:空间数据查询

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 一、实验描述 空间数据库查询定义:从空间数据库中找出所有满足属性约束条件和空间约束条件的地理对象。 二、实验内容 (一)属性查询 1、简单查询 2、SQL查询 (二)图形查询 1、点查询 2…

C++入门指南及实战 第一步 概述及经典HelloWorld

本系列文章环境及学习门槛 编程基础&#xff1a;无年龄&#xff1a;具有一定的逻辑思维英文&#xff1a;不要求数学&#xff1a;不要求学习时长&#xff1a;每天一篇&#xff0c;一周4-5篇即可&#xff0c;每篇最多1小时死记硬背&#xff1a;不需要&#xff0c;理解至上本机环…

【数学题】男女的比例

在一个重男轻女的国家里&#xff0c;每家每户都想生男孩。若一户人家生了一个男孩&#xff0c;就不会再生了。若一家生了一个女孩&#xff0c;便会再生一个&#xff0c;直到生下男孩为止。请问这个国家(有无限多的人民)的男女比例是多少?答案&#xff1a;1比1。在某一户人家中…

为什么云服务器没西南的_去年“双11“我买的那台云服务器

一、为什么会买云服务器为什么初学者需要一台云服务器&#xff1f;从我自己那仅有的一点经验来看&#xff0c;重点无非这一个词&#xff1a;实践。细数一下初学者拥有一台云服务器的好处&#xff1a;学习操作系统、熟悉环境大部分初学者在本地使用的是windows系统&#xff0c;在…

Java线程安全以及线程安全的实现方式和内存模型(JMM)

一、了解几个概念 1&#xff09;临界区&#xff1a; 临界区指的是一个访问共用资源&#xff08;例如&#xff1a;共用设备或是共用存储器&#xff09;的程序片段&#xff0c;而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时&#xff0c;其他线程或是进…

animate 实现滑动切换效果

今天和大家分享一下用 animate 实现滑动切换效果的小例子 ------- 来自<一只有梦想的前端小白> 大家都知道jQuery 提供的有一下几种方法能够实现滑动效果&#xff1a; slideDown()slideUp()slideToggle()但是以上的滑动不太方便控制其滑动的方向&#xff0c;所以我们还是…

[不一样的依赖注入]通过递归实现容器里依赖注入

递归实现依赖注入创建所需的依赖服务类1public class Test2{3 public void PrintTest()4 {5 Console.WriteLine("Hello World");6 }7}89public class Test2 10{ 11 private readonly Test _test; 12 13 public Test2(Test test) 14 { 15 …

ArcGIS实验教程——实验十七:缓冲区分析(Buffer Analysis)

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 【实验描述】 缓冲区(Buffer)是为了识别某一地理实体对周围地物的影响而在其周围建立的一定宽度多边形区域,缓冲区分析(Buffer Analysis)是用来确定不同地理要素的空间临近性或接近程度的一种分…

Java之jdk和CGLib实现动态代理

1 jdk实现动态代理源码实现 这里需要用到InvocationHandler接口 public interface Hello {public void sayHello(); } public class HelloImpl implements Hello {Overridepublic void sayHello() {System.out.println("hello word");} }import java.lang.reflect…

从Visual Studio中生成Linux设备

本文讲的是从Visual Studio中生成Linux设备&#xff0c;【IT168 云计算频道】近日Novell发布了SUSE Studio&#xff1a;一个用于创建Linux设备&#xff08;appliance&#xff09;的工具。与此同时&#xff0c;Mono小组创建了一个插件以从Visual Studio中生成支持SUSE的设备。 …

C++入门指南及实战 第二步 HelloWorld及扩展详解

回顾 在上一节中&#xff0c;我们编写了如下代码&#xff0c;完成了 HelloWorld程序的编写&#xff1a; #include<iostream> using namespace std;int main(){cout <<"Hello World";return 0; }本小节将会对该代码进行讲解&#xff0c;并且解释一下专业…

2560x1600分辨率高吗_做设计还弄不清分辨率和像素之间的关系,来了解下他们是怎么换算...

许多同学都在问我关于像素的问题&#xff0c;为什么印刷时要300分辨率以上&#xff1f;网页为什么72就够了&#xff1f;做户外喷绘30&#xff0c;甚至巨幅画面20就上了。关于这些还是很多人不知道的&#xff0c;要不也不会被卖手机的忽悠&#xff0c;各大手机推销员拿着手机大声…

使用 fixture 机制重构 appium_helloworld

一、前置说明 在 pytest 基础讲解 章节,介绍了 pytest 的特性和基本用法,现在我们可以使用 pytest 的一些机制,来重构 appium_helloworld 。 appium_helloworld 链接: 编写第一个APP自动化脚本 appium_helloworld ,将脚本跑起来 代码目录结构: pytest.ini 设置: [pyt…

linux程序调试命令strace

strace命令用法详解: strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界&#xff0c;进程不能直接访问硬件设备&#xff0c;当进程需要访问硬件设备(比如读取磁盘文件&#xff0c;接收网络数据等等)时&#xff0c;必须由用户态模式切换至内核态模式&#xff0…