JAVA多态的理解及应用
1.理解多态
1.多态是面向对象程序设计的三大支柱之一。
2.多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
3.继承关系使一个子类能继承父类的特征,并且附加一些新特征。子类是父类的特殊化,每个子类的实例都是其父类的实例,但是反过来不成立。使用父类对象的地方都可以使用子类对象,这就是通常所说的多态。
2.实现多态
Java实现多态有三个必要条件:继承、重写、向上转型。
继承:在多态中必须存在有继承关系的子类和父类。
重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。
只有满足了上述三个条件,我们才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。
3.代码案例解析
1.代码部分
public class Gun {public static void main(String[] args) {Guns G1 = new Guns();AK47 AK = new AK47();M4A1 M4 = new M4A1();M4A1S M4S = new M4A1S();G1.shoot();//对应输出Guns shootAK.shoot();//对应输出AK47 shootAK.speed();//对应输出300m/sM4.shoot();//对应输出M4A1 shootM4S.shoot();//继承父类方法shoot,输出M4A1 shootGuns G2 = new AK47();//向上转型G2.shoot();//动态绑定,父类引用指向的或者调用的方法是子类的方法,输出AK47 shoot//G2.speed();此方法不能编译,向上转型后父类引用不能调用子类自己的方法,此时需要向下转型Guns G3 = M4S;M4S = (M4A1S)G3;//向下转型M4S.speed();//对应输出400m/s}
}class Guns{//父类public void shoot(){System.out.println("Guns shoot");}
}class AK47 extends Guns{//子类public void shoot(){System.out.println("AK47 shoot");}//方法重写public void speed() {System.out.println("300m/s");}
}class M4A1 extends Guns{//Guns的子类,M4A1-S的父类public void shoot(){System.out.println("M4A1 shoot");}//方法重写public void speed() {System.out.println("450m/s");}
}class M4A1S extends M4A1{public void speed() {System.out.println("400m/s");}//方法重写
}
2.输出结果
Guns shoot
AK47 shoot
300m/s
M4A1 shoot
M4A1 shoot
AK47 shoot
400m/s
JAVA多态的理解及应用相关推荐
- Java多态-如何理解父类引用指向子类对象
java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是"向上转型". 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 C ...
- 对JAVA多态的理解
对JAVA基础多态的理解 多态是JAVA中面对对象的一种体现,它也提高了一段代码的复用性和扩展性. 所谓的多态,用一句话来说:相同的行为,不同的实现 多态又分为两种:静态多态 和 动态多态 静态多态 ...
- Java多态的理解和应用
一.多态概述 1.多态是继封装.继承之后,面对对象的第三大特性 2.多态在实际中的意义: ● 在现实生活中尝尝会出现不同的形态体现,例如张三是一名学生,而学生又是人的一种分类,所以说张三既是学生也是人 ...
- java多态的理解(java多态的理解和使用 - 阿猫阿狗)
谈谈你对Java中的多态的理解.(为什么要使用多态,有什么好处,一般用在什么场合) 面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同 ...
- java多态的理解(运行时多态)_Java多态的理解
什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一 ...
- Java中 多态的理解
** Java中 多态的理解 ** 多态官方定义为: 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指 ...
- java多态 降低代码耦合性_深度分析:理解Java中的多态机制,一篇直接帮你掌握!...
Java中的多态 1 多态是什么 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.用白话来说,就是多个对象调用同一 ...
- 关于java多态中覆盖的理解
在前面一篇文章中,我已经介绍了关于java多态中重载的理解与规则 所以这篇文章主要介绍多态中的覆盖机制. 首先重载与覆盖除了表现方式不同之外,还有运行时间上的不同,重载是在编译期间就已经可以确定好调用 ...
- Java 面向对象:多态的理解
Java 面向对象:多态的理解 一.多态的定义 一个对象的实际类型是确定的,但可以指向引用对象的类型可以有很多(父类,有关系的类) 操作符的多态 +可以作为算数运算,也可以作为字符串连接 类的多态 父 ...
最新文章
- 皮一皮:现在当爹妈的不容易...
- 4kyu Path Finder #2: shortest path
- svm硬间隔与软间隔
- 究竟什么是Linux内核?我该如何高效学习?​
- Lync Server 2010迁移至Lync Server 2013故障排错 Part3 :内外网共享PPT提示证书问
- 如何给APP开发属于自己的小程序
- win10服务器文件夹显示不全,如何让Win10文件夹始终显示功能区有哪些方法
- 小程序开发 js里面array操作的方法列表。
- 无连续整数的子集数问题
- 一分钟教你搞定chrome的安装---redhat7.6如何安装谷歌浏览器
- linux创建lvm分区命令,CentOS下LVM的创建与使用
- php实现页面强制跳转,PHP实现页面跳转的几种方法 - 米扑博客
- 北四村的蚁族程序员:面朝西二旗
- 使用Pyqt5制作GUI界面,并使用pyinstaller打包成exe文件
- [网络篇]ESP8266-SDK教程(六)之网页配置Wi-Fi名称和密码
- java 2 实用教程(第五版)第五章课后编程题:设计一个动物声音模拟器,希望模拟器可以模拟许多的动物的叫声。
- 小唐竟然这样配置idea springboot 微服务批量启动!佩服
- LeetCode(七)
- 新的开始 新的征程
- 中科院分区 计算机科学与技术专业,中科院分区还有没有升级版?求大神告知!...
热门文章
- NVIDIA GPU 常用操作
- 蓝牙鼠标链接Win10需要“输入MI MOUSE BT3.0的PIN”的解决方案
- windows 下 redis服务经常自动关闭
- Hooks详解(一)
- 几何分布的期望公式的推导
- xposed框架 微信群发源码
- 浅谈java中的ServerSocket和Socket的通信原理实现聊天及多人聊天
- 基于freeswitch1.6的IVR智能语音机器人交互逻辑lua脚本
- sata port multiplier
- 尝试“Android应用图标微技巧,8.0系统中应用图标的适配”