Overload是重载,Override是覆盖,也就是重写。
重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中定义的方法,这相当于把父类中的那个完全相同的方法给替换掉了,这是面向对象编程的多态的一种表现。
注意:
1、子类覆盖父类的方法,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。
2、子类方法的访问权限只能比父类更大,不能更小,如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。
关于Overload中,如果两个方法的参数列表完全相同,返回值不同是否是重载?
这是不行的,重载跟返回值无关。
假如我们在同一个类中,写了两个方法名相同并且参数列表也相同,只是返回值不同,
public Stringshow(int number)
public int Stringshow (int number)
而我们调用这个方法给它赋值的时候java虚拟机并不知道你要赋给的是String型的方法还是int型的方法,所以重载跟返回值无关。
关于Override覆盖,最熟悉的就是对接口方法的实现。
接口只是对方法进行声明,而我们在实现时,需要实现接口声明的所有方法。
此外,我们在继承中也可能会在子类中覆盖父类的方法。
比如覆盖Object类的equals()方法。
|