覆盖基本上支持后期绑定。因此,在运行时确定将调用哪种方法。它用于非静态方法。
隐藏适用于所有其他成员(静态方法,实例成员,静态成员)。它基于早期绑定。更明确地说,要在编译时确定要调用或使用的方法或成员。
在你的示例中,第一个调用
Animal.testClassMethod()是对
static方法的调用,因此可以确定要调用哪个方法。
在第二个调用中
myAnimal.testInstanceMethod(),你将调用一个非静态方法。这就是所谓的运行时多态。直到运行时才确定要调用哪种方法。

覆盖基本上支持后期绑定。因此,在运行时确定将调用哪种方法。它用于非静态方法。
隐藏适用于所有其他成员(静态方法,实例成员,静态成员)。它基于早期绑定。更明确地说,要在编译时确定要调用或使用的方法或成员。
在你的示例中,第一个调用
Animal.testClassMethod()是对
static方法的调用,因此可以确定要调用哪个方法。
在第二个调用中
myAnimal.testInstanceMethod(),你将调用一个非静态方法。这就是所谓的运行时多态。直到运行时才确定要调用哪种方法。