博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
论PHP面向对象之-多态
阅读量:4299 次
发布时间:2019-05-27

本文共 904 字,大约阅读时间需要 3 分钟。

面向对象的三大特征

我们知道,面向对象有三大特征,分别是:

  • 封装
  • 继承
  • 多态

封装与继承

封装

因为对象都对自己负责,所以,对象的很多东西都不需要或不可以暴露给其他对象。

比如:

  • 小明不需要将所有的信息告诉别人;
  • 手机不能不封装而把CPU、内存卡等等都暴露给用户,这太危险了(如下图)。

image_1bbtpe96d1it014n31bfs68vt9g9.png-2669.5kB

封装解决了数据的安全性,内在也体现了‘每个对象都对自己负责’

继承

继承,没什么好说的,主要是实现了代码的复用。

但说到这里,我们知道实现代码的复用,有两种方式,一种是组合、一种是继承。

先给大家抛出一个问题:“什么时候该用组合?什么时候该用继承呢?”

这个问题大家先想想,我们以后再讨论。

重头戏·多态

定义

对于多态,我们先下一个定义:

同一个操作,作用于不同的对象,会产生不同的结果。

说白了,就是一个相同的指令发出,不同的对象会对这个指令有不同的反应,所以称为多态。

举个栗子

比如,我们有2个对象,分别是 word、excel。

我们使用相同的操作 Ctrl+N

相同的操作:

对于word是新建word文档;
对于excel是新建excel表格。

多态有什么好处

多态最大的好处可以用2个词语来概括:“灵活”、“解耦”

耦合度的意思是模块与模块之间、代码与代码之间的关联度。

紧耦合也就是他们之间的关联度大,这样的代码是很难维护的,很容易出bug的。出现一个bug,其他bug很可能像滚雪球一样增长。

我们经常说:“要面向接口编程,而不是面向实现编程”。

多态性,也就要求我们面向接口编程。

不同的对象,相同的接口,但因为多态,有了不同的实现。

这样面向接口编程,就降低了耦合度,很灵活。

PHP中的多态

talk is cheap,show me your code

say(); }else{ echo "sorry.It's wrong"; }}work(new Cat()); //Cat say miaomiaowork(new Dog()); //Dog say wangwang

更多精彩,请关注公众号“聊聊代码”,让我们一起聊聊“左手代码右手诗”的事儿。

这里写图片描述

你可能感兴趣的文章
Docker基础-4-Docker架构和底层技术实现初探
查看>>
Docker基础-5-image概述
查看>>
Docker基础-6-如何配置docker从中国官网仓库下载,提升镜像拉取速度
查看>>
Docker基础-7-使用Dockerfile DIY第一个镜像
查看>>
Docker基础-8-初识container
查看>>
Docker基础-9-docker命令(一)
查看>>
Docker基础-13-如何发布一个镜像到私有的docker仓库
查看>>
Docker基础-14-Dockerfile实战练习2
查看>>
Docker基础-15-容器操作
查看>>
Docker基础-16-网络-Linux网络命名空间
查看>>
Docker基础-17-网络-两个容器为什么能通信
查看>>
Docker基础-18-网络-两个网络命名空间网络通信配置过程
查看>>
Docker基础-19-网络-bridge模式和docker0详解
查看>>
Docker基础-20-网络-容器link关系和新建bridge网络
查看>>
Docker基础-21-网络-none和host网络
查看>>
Docker基础-22-volume-数据持久化之data volume
查看>>
Docker基础-23-数据-数据持久化之Bind Mouting
查看>>
Java数据结构和算法-1-数组-自定义封装一个数组操作类(1)
查看>>
Java数据结构和算法-2-数组-自定义封装一个数组操作类(2)
查看>>
Java数据结构和算法-3-数组-简单排序:冒泡排序/选择排序/插入排序
查看>>