网站首页 > 技术教程 正文
多态性是面向对象程序设计代码重用的一个重要机制,今天小编为大家带来大数据编程入门:Java多态这篇文章。
一、什么是多态
1、多态的概念
多态是指同一行为具有多种不同形式或形态的能力。
多态性是使用不同实例执行不同操作的相同接口,如下图所示:
多态性是对象的各种形式的体现。
比如在生活中,我们喝水这个事件,有的人喜欢喝冷水,而有的人则喜欢喝热水。
又比如我们在键盘上按下“W”这个键,在许多游戏中就是前进的指令,在word中则是在屏幕上打印出“W”这个字母。
同一件事在不同的对象上会产生不同的结果。
2、多态的优点
① 消除类型之间的耦合关系
② 可替换性
③ 可扩充性
④ 接口性
⑤ 灵活性
⑥ 简化性
3、多态存在的三个必要条件
① 继承
② 重写
③ 父类引用指向子类对象:Parent p = new Child();
使用多态方法调用方法时,首先检查父类中是否存在该方法,如果不存在,则编译错误;如果是这样,请使用相同的名称调用子类方法。
多态性的优点:可以使程序具有良好的扩展性,可以处理各种对象。
下面是一个多态实例的演示,详见代码中的附注:
运行结果:
二、虚函数
多态性存在虚拟函数。
事实上,Java中没有虚拟函数的概念,它的普通函数相当于C++的虚拟函数,动态绑定是Java的默认行为。如果不希望函数在Java中具有虚拟函数的属性,可以添加最后一个关键字,使其成为非虚拟函数。
重写
我们将介绍在Java中设计类时重写方法的行为如何影响多态性。
方法重写,即子类可以重写其父类的方法。
当子类对象调用重写方法时,它将调用子类方法,而不是父类中的重写方法。
要在父类中调用重写的方法,必须使用关键字super。
假设以下例子中的类继承Employee类:
现在我们仔细阅读下面的代码,尝试给出它的输出结果:
运行结果:
例子解析:
在这个示例中,实例化了两个Salary对象:一个使用Salary来表示s,另一个使用Employee来表示e。
调用s.mailCheck() 时,编译器将在编译时在Salary类中找到mailCheck(),JVM将在执行过程时调用Salary类的mailCheck()。
e是对Employee的引用,但引用e时运行的是Salary类的mailCheck()方法。
在编译时,编译器使用Employee类中的mailCheck()方法来验证语句,但在运行时,Java虚拟机(JVM)调用Salary类中的mailCheck()方法。
整个过程称为虚方法调用,这个方法称为虚方法。
Java中的所有方法都可以用这种方式表示。因此,无论源代码在编译时引用什么数据类型,都可以在运行时调用重写的方法。
三、多态的实现方式
1、重写
2、接口
a.生活中最具代表性的接口就是插座。例如,一个三连接器插头可以连接到三孔插座上,因为每个国家都有自己的接口规则,由于国外定义的接口类型,可能无法出国。
b.Java中的接口类似于生活中的接口,是一些方法特性的集合,但没有方法实现。您可以看到java接口一章的内容。
3、抽象类和抽象方法
以上就是关于大数据编程入门:Java多态的全部内容了,希望这篇文章能够帮助到大家~
- 上一篇: 2020Java和大数据哪个更有前景?
- 下一篇: 大数据学习:四个月学习大数据可能吗?
猜你喜欢
- 2025-01-03 【极客时间训练营】2023高级Java工程师体系课2.0
- 2025-01-03 武汉去哪学软件开发好 Java培训 Python培训班
- 2025-01-03 某IT大佬耗时3个月整理的大数据领域学习路线!网友评论炸锅了
- 2025-01-03 大数据专业怎么学?学习规划及就业前景分析
- 2025-01-03 零基础可以学习大数据吗?
- 2025-01-03 3年Java开发转型大数据,如何跳出CRUD舒适区?
- 2025-01-03 大数据学习:四个月学习大数据可能吗?
- 2025-01-03 2020Java和大数据哪个更有前景?
- 2025-01-03 「问答专栏」大数据学三个月可以精通吗?
- 2025-01-03 大数据零基础培训班要学多久?
你 发表评论:
欢迎- 08-06linux 和 windows文件格式互相转换
- 08-06谷歌 ChromeOS 已支持 7z、iso、tar 文件格式
- 08-06Linux下比较文件内容的6种方法
- 08-06文件格式及功能汇总
- 08-0610个Linux文件内容查看命令的实用示例
- 08-06Linux-如何区分不同文件类型
- 08-06Zabbix技术分享——监控windows进程资源使用情况
- 08-06Linux系统卡顿?学会ps命令这三招,轻松定位问题进程
- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)