1.对于重载方法(Overload)的选择是静态的,方法在编译时做出决定的;覆盖方法(Override)的选择是动态的,方法在运行时做出决定。所以调用重载方法只会选择编译好的一个情况(这种情况极易出错),调用覆盖方法则会根据调用的对象动态决定。
2.当一个子类包含的方法声明与其父类中的方法声明具有同样签名时,方法就被覆盖了。
3.final方法不能被子类覆盖(@Override);
static方法不能被子类覆盖(@Override),如果子类出现与父类相同签名的方法只是相当于新建一个方法。
4.对于多个具有相同参数数目的方法,应该尽量避免重载方法;如果无法避免,如:构造函数,至少应该避免这些参数只需类型转换(如map,list,collection)就可以传递给不同的重载方法。