是柯南啊 2023-04-05 09:58 采纳率: 50%
浏览 15

关于Java多态的几个小问题,求解答

关于Java的多态的几个小问题,
1.就是Java的多态是基于什么背景下创造出来的?或者说是用来解决什么问题的?
之所以问这个问题是因为在学习到这一块内容的时候觉得多态的用法和普通创建对象并调用方法没什么区别,我需要调用其他子类的方法时直接创建这个子类的对象不就行了吗?为什么要用多态的形式呢?所以我实际上想问的是多态相比常规的创建对象的方法有什么优势?
2.多态格式下面的对象名的本质代表的是[父类的对象]还是[子类的对象]?

img

就是这里的P,代表的是谁,我拿到的教材上说的是代表的是new的对象,

我能接受,但是不理解,主要是产生了如下的疑问?有没有能让人心服口服的答案?

1)如果说P本质上代表的父类的话,那么它是如何使用子类被重写的方法的?

2)如果说P本质上代表的子类的话,那么它为什么有无法使用子类中独有的方法呢?

  • 写回答

4条回答 默认 最新

  • threenewbee 2023-04-05 10:11
    关注

    说白了吧,主要解决类库的复用和插件的开发,再具体一点来说,就是主程序是写好的不能改,同时允许后来添加代码自定义一些行为。
    类库或者主程序,只能使用基类型,这些代码不能修改。
    外围开发者通过继承和重写方法,实现了添加和替换逻辑。
    而传入派生类,类库执行对应的方法,实际上执行的是派生类自定义的,所以就实现了功能的扩展。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月5日

悬赏问题

  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响