Java中多态的虚拟方法调用,具体有什么作用呢

网上查资料,只了解代码解耦合。
但是不知道调用虚拟方法,在实际生产环境中,具体可以做什么呢。
求帮助

虚方法,是底层实现上的概念,不是多态在编程当中的概念,这是两码事儿。
你的问题应该是:Java的多态,具体有什么作用。
这样容易被人理解你要问的问题。


计算机程序由两大部分组成,分别是行为和数据。
行为就是通过函数的调用来体现的,数据是通过常量、变量和参数来体现的。
通常情况下,函数的名称会标明函数的行为,但是,在多态的场景中,会出现相同函数名,不同对象调用后,真实行为会不同。
比如猫叫和狗叫,虽然都是叫,但是叫声不同。
如果猫和狗都继承自动物,都会叫,那么,猫的叫和狗的叫就会不相同。


Java语言是面向对象的编程语言,里面有类和对象的概念。
因为计算机程序可以理解成由行为和数据组成,那么,在设计类的时候,也可以把类设计成完成操作(行为)的类和保存数据的类。
完成操作的类,我们一般称为Action类;保存数据的类,我们一般称为Bean类。
多态的概念,涉及的是Action类。
如果有两个以上的子类继承并实现了相同父类(或接口)的相同方法,同时,这些子类的同名方法中,实现方案也各不相同,那么,在实际使用当中的表现,就被称为多态。在编程使用当中,由于同名方法继承自父类(或接口),就可以直接使用父类(或接口)的引用来指向子类的对象,而不用使用具体的子类引用,换句话说就是面向父类(或接口)编程,从而使得同名的函数,不同的子类表现同不相同。

多态在实际当中的应用:

  1. 数据持久化:
    我们用到的数据,可以保存到数据库总,可以保存到 csv 文件中,也可以保存到 json 文件中。
    编写一个IStore接口,里面声明一个write(Data)方法,然后,三种形式,分别写三个实现类。
    然后,你想以哪种形式存放数据,就实例化哪个实现类就可以了。
    使用的时候,只关注IStore接口即可,实现类的具体实现,使用的时候不必关注。
    实现类的具体实现,只在编写实现类的时候进行关注即可。
  2. 两个数据的比较:
    写一个正序的比较器,也可以写一个逆序的比较器,都是比较器,都是比较,但是,放到集合里面进行排序,结果一个是正序一个是逆序。
    多态在Java的应用,还是存在的,虽然不那么广泛使用,但是,也不会非常稀少。

虚拟方法是啥意思?

这玩意讲起来太费劲了。还得画图。
你先理解了多态的概念吧。多态这个词,很多有工作经验的程序员都没有弄明白,只停留在继承接口的程度上。