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

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

img

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

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

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

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

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

多态可以减少代码量
比如有现实世界中有teacher,student,person类人群。
person都有任务,即work,在代码里对应一个方法。
有一种现实场景是,校长不管你是谁/哪类人,说做你该做的事/任务就好了。
在代码里相当于调用person.work()方法。而不用单独调用teacher.work(),student.work(),每类人单独调用一遍。

代码写得少了,没啥业务场景,你是体会不出来的
当你要约束一种行为,对于调用方来说,它并不关心你的具体处理方案时,抽取成标准规范层那是最好的选择

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^