在面向对象语言中,接口的多种不同的实现方式即为多态。

多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息将可以产生不同的结果,这种现象称为多态性。

多态案例一:

class employee{//定义员工父类protected function working(){//定义员工工作,需要在子类的实现echo "本方法需要在子类中重载!";}}class painter extends employee{//定义油漆工类public function working(){//实现继承的工作方法echo "油漆工正在刷漆!\n";}
}class typist extends employee{//定义打字员类public function working(){echo "打字员正在打字!\n";}
}class manager extends employee{//定义经理类public function working(){echo "经理正在开会!";}
}function printworking($obj){//定义处理方法if($obj instanceof employee){//若是员工对象,则显示其工作状态$obj->working();}else{//否则显示错误信息echo "Error: 对象错误!";}
}printworking(new painter());//显示油漆工的工作
printworking(new typist());//显示打字员的工作
printworking(new manager());//显示经理的工作

多态案例二:

<?php
//定义一个形状的接口,里面有两个抽象方法让子类去实现
interface Shape{function area();function perimeter();
}
//定义一个矩形子类实现形状接口中的周长和面积
class Rect implements Shape{private $width;private $height;function __construct($width,$height){$this->width = $width;$this->height = $height;}function area(){return "矩形的面积为:".($this->width*$this->height);}function perimeter(){return "矩形的周长为:".(2*($this->width+$this->height));}
}
class Circular implements Shape{private $radius;function __construct($radius) {$this->radius=$radius;}function area(){return "圆形的面积是:".(3.14*$this->radius*$this->radius);}function perimeter(){return "圆形的周长是:".(2*3.14*$this->radius);}
}
function printcontent($obj){if($obj instanceof Shape){echo $obj->area()."<br>";echo $obj->perimeter()."<br>";}else{echo "Error:对象错误!";}
}
printcontent(new Circular(4));
printcontent(new Rect(3,5));?>

多态的实现可以通过继承父类,或是继承接口来实现。

继承父类时,要重载其中的方法。继承接口时,要根据具体的需要,改写抽象方法。

instanceof用来检测一个给定的对象是否属于(继承于)某个类(class)、某个类的子类、某个接口(interface)。如果是则返回true。

本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/archive/2012/08/20/2647427.html,如需转载请自行联系原作者

面向对象三大特性(封装,继承,多态)之多态相关推荐

  1. Java面向对象三大特性(封装继承多态)解释及案例

    文章目录 包 包基本语法 命名规则 命名规范 导入包实例 访问修饰符 面向对象编程-封装 面向对象编程-继承 super关键词 super和this的比较 方法重写/覆盖 (override) 注意事 ...

  2. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  3. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

  4. 大数据必学Java基础(四十):面向对象三大特性之一继承(Inheritance)

    文章目录 面向对象三大特性之一继承(Inheritance) 一.列举案例说明 1.类是对对象的抽象

  5. Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__

    一.面向对象三大特性 二.多态 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果. 一个父类,可以继承给多个子类,每个不同的子类可以创建多个对象 ...

  6. java 面向对象三大特性之继承 万字详解(超详细)

    目录 前言 : 一.为什么需要继承: 二.什么是继承(Warning : 篇幅较长)? 1.继承概述: 2.子类继承父类之后达到的效果 : ①如何使用继承? ②代码演示 : 3.继承的使用场景: eg ...

  7. C++面向对象三大特性——封装与信息隐蔽

    4.1 封装(实现手段--class) 有意义的事物都可以抽象.在抽象类的时候不要想着代码是怎么实现,而是用自然语言去分析逻辑即可!否则极易出错. 4.1.1 封装的意义 封装是C++面向对象三大特性 ...

  8. Java面向对象三大特性(封装、继承、多态)

    文章目录 前言 一.封装 1. 封装的概念 2. private实现封装 3. getter和setter方法 4.封装的好处 二.继承 1. 继承的概念 2. extends实现继承 3. supe ...

  9. Java面向对象三大特性之继承多态的预习笔记,are you ready? 面对疾风吧!

    文章目录 继承(extends) super关键字 方法重写 instanceof关键字 abstract关键字 接口(interface) 多态 继承(extends) AextendsB A继承了 ...

  10. C++——面向对象三大特性之继承

    文章目录 继承概念 继承的定义 继承的语法格式 继承方式 继承方式的汇总 赋值兼容规则 基类对象和派生类对象的赋值转换 继承中的作用域 派生类的默认成员函数 继承与友元 继承与静态成员 菱形继承 虚继 ...

最新文章

  1. 从芯片到AI智能芯片,一文了解它的前世今生
  2. python 素描化图像_python实现图片素描效果
  3. Project Euler 92:Square digit chains 平方数字链
  4. PyTorch 1.0 中文文档:数据类型信息
  5. Android RecyclerView之SnapHelper原理解析(一)
  6. CAD盗图木马分析与处置策略
  7. html向下三角箭头,CSS制作三角箭头(兼容IE6)
  8. BTA12A-ASEMI的IGBT管BTA12A
  9. Halo博客 -- ③ 本地运行
  10. 自己写一个调查问卷Web项目 (超详细版)
  11. 一图看懂信用报告在线查询指南
  12. Socket 【网络通信 - Socket】
  13. 计算机网络英语app,学习英语软件哪家强?下个app随时随地学英语
  14. 初步了解指针------指针的基本概念
  15. 【JS里面使用var声明变量存在的三个问题】
  16. RPD快速产品开发全流程详解
  17. WebGIS和桌面GIS、移动GIS、三维GIS的区别
  18. 打印机 树莓派安装cpus_用树莓派搭建网络打印机
  19. linux ssd磁盘格式化工具,使用Linux对Samsung SSD 850 PRO进行分区和格式化
  20. 程序员总监成长编程九大阶段

热门文章

  1. 线程池的工作原理与源码解读
  2. 50万高奖金!2022年第一场赛事来了
  3. GBDT 算法如何用于分类问题
  4. 上分神器:训练调参与模型集成
  5. 树模型集成学习(Tree Embedding)
  6. OpenAI魔改大模型,参数减少100倍!13亿参数InstructGPT碾压GPT-3
  7. 他25岁当上985博导,今年秋季学生已招满
  8. 为了一个科研idea,博士生们连冥想、巫毒仪式都用上了
  9. NeurIPS 2020放榜,接收率史上最低!AC:低接收率带不来有趣的论文
  10. 深度学习入门Fast.ai 2.0上线!自带中文字幕,所有笔记、资源全部免费!