谈谈你对多态的理解

在面试中如果问到这个问题,我们应该咋么回答呢?我就写一下我的看法如有错误还请个位指正!

文章目录

  • 谈谈你对多态的理解
  • 什么是多态?
  • 多态的实现
  • 向上转型
  • 向下转型
  • 多态的好处

什么是多态?

  • 同一个对象,在不同时刻体现出来的不同状态

  • 多态的关键是每个子类都要重写方法,实现了继承了同样的方法名称但是又有每个的特点,就像龙生九子,每个不一样,有两个好处,一个是类关系清晰,另一个是方法调用方便,只要有传入实参就行。

多态是Java面向对象三个特征中的一个也是做主要的一个,所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
多态分为编译时多态和运行时多态。其中编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数,在运行时谈不上多态。而运行时多态是动态的,它是通过动态绑定来实现的,也就是我们所说的多态性。

多态的实现

Java实现多态有三个必要条件:继承、重写、向上转型。

  • 继承:在多态中必须存在有继承关系的子类和父类(实现关系接口)。
  • 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
  • 向上转型:在多态中需要将父类或者父接口引用指向子类Fu f= new Zi(),只有这样该引用才能够具备技能调用父类的方法和子类的方法。

只有满足了这三个条件,我们才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。

向上转型

父类对象通过子类对象去实例化,实际上就是对象的向上转型。向上转型是不需要进行强制类型转换的,但是向上转型会丢失精度。

向下转型

所谓向下转型,也就是说父类的对象可以转换为子类对象,但是需要注意的是,这时则必须要进行强制的类型转换。

多态的好处

  1. 可替换性:多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
  2. 可扩充性:多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
  3. 接口性:多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
  4. 灵活性:它在应用中体现了灵活多样的操作,提高了使用效率。
  5. 简化性:多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

【面试常问】谈谈你对多态的理解相关推荐

  1. 给大家提供一些面试常问的问题

    给大家提供一些面试常问的问题 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private :     私有成员, 在类的内部才可以 ...

  2. 面向对象程序设计(c++)面试常问——for考研复试面试

    关于c++的一些面试常问问题(考研面试编程语言) 前言: 本人22考研党,已上岸,发一些复试准备整理的资料作为对考研准备的一个收尾.由于近几年基本都是线上复试,线上的话会更加注重概念的考察,本人在复试 ...

  3. 指南Java面试常问问题及答案

    Java 面试常问问题及答案(非常详细) 一:java 基础 1.简述 string 对象,StringBuffer.StringBuilder 区分 string 是 final 的,内部用一个 f ...

  4. Java基础(以及面试常问问题)

    1.Vector,ArrayList, LinkedList的区别(面试常问到的) 三者都是实现集合框架中的List,也就是所谓有序集合,因此具体功能比较近似,比如都提供按照位置进行定位.添加或删除的 ...

  5. 计算机考研复试面试常问问题 编程语言篇

    计算机考研复试面试常问问题 编程语言篇 个人整理,免费分享,不可用于商业用途,转载请注明出处! 但是有同学反应闲鱼上有人盗卖此免费分享资料,还有好多同学买了,所以希望大家多多点赞评论收藏,提高这份资料 ...

  6. java8 垃圾收集_面试官:怎么做JDK8的垃圾收集器的调优(面试常问)

    看着面试官真诚的眼神,心中暗想看起来年纪轻轻却提出如此直击灵魂的问题.擦了擦额头上汗,我稍微调整了一下紧张的情绪,对面试官说: 在jdk8中有serial收集器.parallel收集器.cms收集器. ...

  7. GET 和 POST 的区别(重要,面试常问)

    GET 和 POST 的区别(重要,面试常问) 1.GET 在浏览器回退时是无害的,而 POST 会再次提交请求. (get:不会再次发送请求:post:浏览器会继续向URI发送请求) 2.GET 产 ...

  8. linux高级运维笔试简答题及答案,企业linux初级和高级运维面试常问题目问答总结技巧讲解(2020年录制)...

    课程增值: 课程是我最近面试辅导的所有学员,成功找到工作,企业常问题目,我带领大家学习,面试如何问答. 我曾经经历面试linux运维没有做大量准备,经历大量hr给我说的一句话就是 回家等通知吧,心碎了 ...

  9. Java面试常问计算机网络问题

    转载自   Java面试常问计算机网络问题 一.GET 和 POST 的区别 GET请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:/test/demo_form.asp?na ...

最新文章

  1. 两表格合并_使用 Python 合并多个格式一致的 Excel 文件
  2. 图形处理(三)简单拉普拉斯网格变形-Siggraph 2004
  3. DAG最长路问题 hdu-1224
  4. Java加权负载均衡策略
  5. java题目青蛙跳杯子_历届试题 青蛙跳杯子
  6. leetcode刷题答案
  7. udp端口转发 Linux,Linux下利用iptables快速实现UDP/TCP端口转发
  8. python C语言加速
  9. 西电大学计算机专硕,2021西安电子科技大学计算机专硕考研成功经验分享
  10. 基础信念(二):框架、专注、勇气
  11. IT行业道德伦理 介绍
  12. 关于javascript中避免使用eval的理解
  13. Python爬虫:新浪新闻详情页的数据抓取(函数版)
  14. 新能源汽车整车控制器(VCU\HCU)
  15. 这是一页纸商业计划书 (Business Plan) 模板(转)
  16. python post 上传文件_Python通过POST方式上传文件及提交参数到远程服务器
  17. 酒店订房退房管理系统(数组应用)
  18. vue 程序执行的过程
  19. 关于MIUI刷入谷歌GAPPS后卡FC的问题
  20. 人工智能Java SDK:人脸检测,应用于包括人脸门禁系统、刷脸支付等各行各业

热门文章

  1. asp获取电脑物理地址_编写Metasploit模块获取Xshell和Xftp明文密码
  2. 20145339顿珠达杰 《信息安全系统设计基础》第0周学习总结
  3. [爱情] [奋斗][主演:佟大为 李小璐][赵宝刚2007励剑之作][更新至24集]
  4. python淘宝爬虫_简单的抓取淘宝图片的Python爬虫
  5. 原来面试成功的程序员简历都是这样写的
  6. 【C++】按字母表的顺序,从字母A到Z顺序打印输出。
  7. 用PythonCharm制作抓狐狸的小游戏。
  8. 法律常识(一)婚姻法全文
  9. cocos creator教程【打造路径编辑系统】
  10. 公众号阅读原文附件怎么添加