Java中的多态分为动态多态和静态多态。
动态多态是指在运行时根据对象的实际类型来确定调用的方法。具体来说,当父类引用指向子类对象时,通过父类引用调用的方法将会根据子类的实际类型来确定调用哪个方法。这种多态性是由Java的继承机制和虚拟方法表实现的。
静态多态是指在编译时根据方法的声明类型来确定调用的方法。具体来说,当父类引用指向子类对象时,通过父类引用调用的方法将会根据父类的声明类型来确定调用哪个方法。这种多态性是由Java的方法重载机制实现的。
因此,动态多态是在运行时确定方法的调用,而静态多态是在编译时确定方法的调用。动态多态是通过继承和重写实现的,而静态多态是通过方法重载实现的。