在Java虚拟机的分派中,我们知道:
重载容易产生的问题:重载是根据参数的静态类型选择执行方法,而方法重写是根据参数的动态类型选择执行方法。
例如People p = new Man();那么People是静态类型,Man是动态类型。
覆盖机制很容易让期望落空。因为如果不知道重载是根据参数的静态类型选择执行方法,那么覆盖就不能执行期待执行的方法。
因此,应该避免胡乱使用重载机制。
慎重使用重载机制方法是:
1.避免导出两个相同参数数目的重载方法。
2.能够导出两个相同参数数目的重载方法,但是对于每个重载方法,至少有一个参数是跟其他重载方法的参数是完全不同的。
3.改变方法名代替重载。例如ObjectOutputStream的write方法有writeInt(int),writeLong(long),writeBoolean(boolean),这样显得可读性强而且不会发生重载的问题。