首先java程序的运行分为编译和运行两部分。
所以重载和重写在这一点就有很明显的区别,因为重写方法的方法名和参数个数类型都一样,所以在java虚拟机的编译阶段是识别不出重写的方法的不同,在运行期间才可以看出不同点。而重载在编译过程就已经暴露了他的不同点,虽然方法名相同,但是参数个数类型都不同。简单的说,就是编译器一个可以区分不同,一个不可以区分不同。
同样java多态针对的是重写,而不是重载,就像射箭一样,重写是在一个弓上射了一个箭,这个箭是可以变化的,重载实在一个弓上射很多只箭。