【面试常问】谈谈你对多态的理解

谈谈你对多态的理解

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

什么是多态?

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

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

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

多态的实现

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

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

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

向上转型

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

向下转型

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

多态的好处

  1. 可替换性:多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
  2. 可扩充性:多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
  3. 接口性:多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
  4. 灵活性:它在应用中体现了灵活多样的操作,提高了使用效率。
  5. 简化性:多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
面向对象多态是指在面向对象编程中,同一个方法名可以在不同的对象上具有不同的实现方式。这意味着通过多态,可以使用统一的接口来处理不同类型的对象,而无需关心具体对象的类型。 多态性的实现依赖于继承和方法重写。当子类继承父类并重写父类的方法时,可以根据子类对象的实际类型来调用相应的方法实现。这样,通过一个通用的父类引用,可以在运行时确定具体调用哪个子类的方法。 多态性的好处在于增加了代码的灵活性和可扩展性。它允许我们编写通用的代码,能够处理不同类型的对象,而无需为每种特定类型编写专门的代码。这样可以减少代码的重复性,提高代码的复用性和可维护性。 另外,多态性还能提高代码的可扩展性。当需要添加新的子类时,只需保证新子类继承自相应的父类,并重写父类的方法即可,而不需要修改原有代码。这种扩展方式符合开闭原则,即对扩展开放,对修改关闭。 多态性还能提高代码的可读性和可理解性。通过使用统一的接口和方法名,可以使代码更易于理解和维护,减少了理解和学习新代码所需的认知负担。 总之,面向对象多态是一种重要的特性,它通过使用统一的接口和方法名,使得代码更具灵活性、可扩展性、可读性和可维护性。它是面向对象编程中的一个关键概念,能够提高代码的质量和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Willing卡卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值