从实例学习多态(Polymorphism [pɔli'mɔ:fizm])
什么是多态?
研究多态,先要知道继承,没有继承的关系,多态就无从谈起。
看下面的代码例子:
Parent.java,父类
- package com.gyabooks.test;
- public class Parent {
- String sex="男";
- String height="180cm";
- String weight="75kg";
- public void printInfo(){
- System.out.println("父亲基本信息输出:");
- System.out.println("性别:"+sex);
- System.out.println("身高:"+height);
- System.out.println("体重:"+weight);
- System.out.println();
- }
- }
Son.java,子类
- package com.gyabooks.test;
- public class Son extends Parent {
- String sex="男";
- String height="120cm";
- String weight="25kg";
- public void printInfo(){
- System.out.println("儿子基本信息输出:");
- System.out.println("性别:"+sex);
- System.out.println("身高:"+height);
- System.out.println("体重:"+weight);
- System.out.println();
- }
- }
Daughter.java,子类
- package com.gyabooks.test;
- public class Daughter extends Parent{
- String sex="女";
- String height="120cm";
- String weight="25kg";
- public void printInfo(){
- System.out.println("女儿基本信息输出:");
- System.out.println("性别:"+sex);
- System.out.println("身高:"+height);
- System.out.println("体重:"+weight);
- System.out.println();
- }
- }
Test.java,测试类
- package com.gyabooks.test;
- public class Test {
- public static void main(String[] args) {
- Parent p = new Parent();
- Son s = new Son();
- Daughter d=new Daughter();
- p.printInfo();
- s.printInfo();
- d.printInfo();
- p = s;
- p.printInfo();
- p=d;
- p.printInfo();
- }
- }
程序输出结果:
- 父亲基本信息输出:
- 性别:男
- 身高:180cm
- 体重:75kg
- 儿子基本信息输出:
- 性别:男
- 身高:120cm
- 体重:25kg
- 女儿基本信息输出:
- 性别:女
- 身高:120cm
- 体重:25kg
- 儿子基本信息输出:
- 性别:男
- 身高:120cm
- 体重:25kg
- 女儿基本信息输出:
- 性别:女
- 身高:120cm
- 体重:25kg
看以上的红色加粗部分,把子类赋给了Parent变量p,但是p此时表现的行为状态却不是父类行为,父类悄无声息地调用了子类的方法,“父亲”的行为多变,在面向OOP领域里,这种行为就叫做多态。
维基多态定义为:多态(英语:Polymorphism),是指面向对象程序运行时,相同的消息可能会送给多个不同的类之对象,而系统可依据对象所属类,引发对应类的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作称之。
转载于:https://blog.51cto.com/gyabooks/562876
从实例学习多态(Polymorphism [pɔli'mɔ:fizm])相关推荐
- Go语言的多态(Polymorphism)
Go的多态(Polymorphism) 是怎么实现的? 这几天查资料下面的代码写的很容易看懂. 看代码吧.不多解释了. package mainimport "fmt"type A ...
- Java基础篇--继承(inherit),多态(Polymorphism)
Java基础篇--继承(inherit),多态(Polymorphism) 1. 继承概述 1.1 什么是继承 1.2 为什么要使用继承 1.3 继承的特点 1.4 继承的优点 2. 组合设计模式 2 ...
- 31. Python中的多态(Polymorphism)
<Python编程的术与道:Python语言入门>视频课程 <Python编程的术与道:Python语言入门>视频课程链接:https://edu.csdn.net/cours ...
- Java学习之 多态 Polymorphism
Java学习之多态 多态的概念 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一种运行期的行为,不是编译期的行为. 多态:父类型的引用可以指向子类型的对象. 比如 Parent p = ne ...
- C++ 面向对象(四)—— 多态 (Polymorphism)
基类的指针(Pointers to base class) 继承的好处之一是一个指向子类(derived class)的指针与一个指向基类(base class)的指针是type-compatible ...
- Java中的多态polymorphism
多态性是OOP中的一个重要特性,主要是用来实现动态联编的(即程序的最终状态只有在执行过程中才被决定).这对于大型系统来说能提高系统的灵活性和扩展性 多态的存在要有3个必要条件: 1.要有继承, 2.要 ...
- 什么是多态(polymorphism)
多态就是同一个方法调用,由于对象不同可能会有不同的行为 多态的要点: 多态就是方法的多态,不是属性的多态与属性无关 多态存在必须要有3个条件:继承,方法重写, 父类引用指向子类对象 父类引用指向子类对 ...
- polymorphism java_Java基础-面向对象第三大特性之多态(polymorphism)
Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...
- Python基础20-面向对象:静态、组合、继承与派生、多态、封装、反射、内置attr方法等
目录 静态 静态属性@property 类方法@classmethod 静态方法@staticmethod 组合 继承与派生 继承与派生 继承顺序 在子类中调用父类方法与super 多态 封装 反射 ...
最新文章
- java虚拟机栈帧_Java虚拟机,运行时栈帧结构
- iBatis学习网站推荐
- 创建一个追踪摄像机(2)
- Spring 处理过程分析
- MySql日期处理系列-常用的日期推算处理
- 24 PP配置-生产车间控制-定义工单号码范围
- 华为大数据中心山西_任正非:华为愿与山西一道建立“煤矿人工智能创新实验室”...
- 在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务(老罗学习笔记5)...
- HDFS副本放置策略
- asp.net MVC中怎样让LINQ Designer自动生成的类从别的类继承并调用其基类构造器?...
- Trick(二)——获取一个网页的 title 信息
- leetcode string
- 【语音去噪】基于matlab低通+自适应滤波去噪【含Matlab源码 352期】
- MNIST数据集下载
- ​富士通代理4KBit I2C铁电存储器MB85RC04V
- 程序员表白源码集合打包带走
- 全球最最可爱的的10种著名小型犬
- Element-Ui组件 单选框(Radio) 修改点击激活时的文本颜色,填充色和边框色
- 【VUE项目】VUE+ElementUI电商后台管理系统
- 微信订阅号和服务器,微信订阅号与服务号有什么不同?