什么是多态?

研究多态,先要知道继承,没有继承的关系,多态就无从谈起。

看下面的代码例子:

Parent.java,父类

  1. package com.gyabooks.test;
  2. public class Parent {
  3. String sex="男";
  4. String height="180cm";
  5. String weight="75kg";
  6. public void printInfo(){
  7. System.out.println("父亲基本信息输出:");
  8. System.out.println("性别:"+sex);
  9. System.out.println("身高:"+height);
  10. System.out.println("体重:"+weight);
  11. System.out.println();
  12. }
  13. }

Son.java,子类

  1. package com.gyabooks.test;
  2. public class Son extends Parent {
  3. String sex="男";
  4. String height="120cm";
  5. String weight="25kg";
  6. public void printInfo(){
  7. System.out.println("儿子基本信息输出:");
  8. System.out.println("性别:"+sex);
  9. System.out.println("身高:"+height);
  10. System.out.println("体重:"+weight);
  11. System.out.println();
  12. }
  13. }

Daughter.java,子类

  1. package com.gyabooks.test;
  2. public class Daughter extends Parent{
  3. String sex="女";
  4. String height="120cm";
  5. String weight="25kg";
  6. public void printInfo(){
  7. System.out.println("女儿基本信息输出:");
  8. System.out.println("性别:"+sex);
  9. System.out.println("身高:"+height);
  10. System.out.println("体重:"+weight);
  11. System.out.println();
  12. }
  13. }

Test.java,测试类

  1. package com.gyabooks.test;
  2. public class Test {
  3. public static void main(String[] args) {
  4. Parent p = new Parent();
  5. Son s = new Son();
  6. Daughter d=new Daughter();
  7. p.printInfo();
  8. s.printInfo();
  9. d.printInfo();
  10.  
  11.         p = s; 
  12.         p.printInfo(); 
  13.         p=d; 
  14.         p.printInfo(); 
  15. }
  16. }

程序输出结果:

  1. 父亲基本信息输出:
  2. 性别:男
  3. 身高:180cm
  4. 体重:75kg
  5. 儿子基本信息输出:
  6. 性别:男
  7. 身高:120cm
  8. 体重:25kg
  9. 女儿基本信息输出:
  10. 性别:女
  11. 身高:120cm
  12. 体重:25kg
  13. 儿子基本信息输出:
  14. 性别:男
  15. 身高:120cm
  16. 体重:25kg
  17. 女儿基本信息输出:
  18. 性别:女
  19. 身高:120cm
  20. 体重:25kg

看以上的红色加粗部分,把子类赋给了Parent变量p,但是p此时表现的行为状态却不是父类行为,父类悄无声息地调用了子类的方法,“父亲”的行为多变,在面向OOP领域里,这种行为就叫做多态。

维基多态定义为:多态(英语:Polymorphism),是指面向对象程序运行时,相同的消息可能会送给多个不同的类之对象,而系统可依据对象所属类,引发对应类的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作称之。

转载于:https://blog.51cto.com/gyabooks/562876

从实例学习多态(Polymorphism [pɔli'mɔ:fizm])相关推荐

  1. Go语言的多态(Polymorphism)

    Go的多态(Polymorphism) 是怎么实现的? 这几天查资料下面的代码写的很容易看懂. 看代码吧.不多解释了. package mainimport "fmt"type A ...

  2. Java基础篇--继承(inherit),多态(Polymorphism)

    Java基础篇--继承(inherit),多态(Polymorphism) 1. 继承概述 1.1 什么是继承 1.2 为什么要使用继承 1.3 继承的特点 1.4 继承的优点 2. 组合设计模式 2 ...

  3. 31. Python中的多态(Polymorphism)

    <Python编程的术与道:Python语言入门>视频课程 <Python编程的术与道:Python语言入门>视频课程链接:https://edu.csdn.net/cours ...

  4. Java学习之 多态 Polymorphism

    Java学习之多态 多态的概念 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一种运行期的行为,不是编译期的行为. 多态:父类型的引用可以指向子类型的对象. 比如 Parent p = ne ...

  5. C++ 面向对象(四)—— 多态 (Polymorphism)

    基类的指针(Pointers to base class) 继承的好处之一是一个指向子类(derived class)的指针与一个指向基类(base class)的指针是type-compatible ...

  6. Java中的多态polymorphism

    多态性是OOP中的一个重要特性,主要是用来实现动态联编的(即程序的最终状态只有在执行过程中才被决定).这对于大型系统来说能提高系统的灵活性和扩展性 多态的存在要有3个必要条件: 1.要有继承, 2.要 ...

  7. 什么是多态(polymorphism)

    多态就是同一个方法调用,由于对象不同可能会有不同的行为 多态的要点: 多态就是方法的多态,不是属性的多态与属性无关 多态存在必须要有3个条件:继承,方法重写, 父类引用指向子类对象 父类引用指向子类对 ...

  8. polymorphism java_Java基础-面向对象第三大特性之多态(polymorphism)

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  9. Python基础20-面向对象:静态、组合、继承与派生、多态、封装、反射、内置attr方法等

    目录 静态 静态属性@property 类方法@classmethod 静态方法@staticmethod 组合 继承与派生 继承与派生 继承顺序 在子类中调用父类方法与super 多态 封装 反射 ...

最新文章

  1. java虚拟机栈帧_Java虚拟机,运行时栈帧结构
  2. iBatis学习网站推荐
  3. 创建一个追踪摄像机(2)
  4. Spring 处理过程分析
  5. MySql日期处理系列-常用的日期推算处理
  6. 24 PP配置-生产车间控制-定义工单号码范围
  7. 华为大数据中心山西_任正非:华为愿与山西一道建立“煤矿人工智能创新实验室”...
  8. 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务(老罗学习笔记5)...
  9. HDFS副本放置策略
  10. asp.net MVC中怎样让LINQ Designer自动生成的类从别的类继承并调用其基类构造器?...
  11. Trick(二)——获取一个网页的 title 信息
  12. leetcode string
  13. 【语音去噪】基于matlab低通+自适应滤波去噪【含Matlab源码 352期】
  14. MNIST数据集下载
  15. ​富士通代理4KBit I2C铁电存储器MB85RC04V
  16. 程序员表白源码集合打包带走
  17. 全球最最可爱的的10种著名小型犬
  18. Element-Ui组件 单选框(Radio) 修改点击激活时的文本颜色,填充色和边框色
  19. 【VUE项目】VUE+ElementUI电商后台管理系统
  20. 微信订阅号和服务器,微信订阅号与服务号有什么不同?

热门文章

  1. SVN、Git设置提交时忽略的文件
  2. Docker 简介与安装
  3. MD5 Library in .NET
  4. javascript:document的属性和方法,title,innerHTML,
  5. PPTPD服务端搭建
  6. 新手XP下硬盘安装ubuntu10.10全程解析
  7. C++ string 详解
  8. Nginx 配置实战:负载均衡的实现
  9. 记录计算顺子(12,3,4或者9,0,1,2)的方法
  10. 海外web平台访问速度慢的原因之一