overload:重载。
是指两个方法名相同,但是参数列表不同。参数列表不同包括三种情况:形参的个数不同,形参的类型不同,形参的类型的顺序不同。只有满足一种情况就可以 了。它和返回值是否相同无关。其时你可以这么想,当JVM调用一个函数时,它先通过函数名来寻找该函数,有可能会找到好几个。那么它只好用参数来匹配了,看能匹配到哪一个就用哪一个。这个时候因为还没有执行,JVM根本不知道会返回什么类型的值,所以就无法通过返回值来确定到底该用哪一个方法了。
override:重写,覆盖。
我觉得还是用重写好理解些。既然是重写了,那么你必须保证和原来的一样。所以它要求返回值、函数名、参数列表都得完全一样才行。
当子类重写了父类的方法后,子类除了通过super来调用父类的方法外,就没有办法调用父类的被重写的方法了。
但是如果两个方法是重载,那么这两个方法都可以用,而且不受任何影响。 |