Overload是重载的意思
Override是覆盖的意思
Overload表示同一个类中可以有多个名称相同的方法,但是这些方法的参数列表各不相同(参数的个数或者类型不同)。
Override表示子类中的方法可以与父类的某个方法名称和参数完全相同,通过子类创建的实例对象调用这个方法的时候,将调用子类定义的该方法,这相当于把父类中定义的那个完全相同的犯法给覆盖了,这也是面向对象编程的多态性的一中体现。子类覆盖父类的方法时,只能抛出比父类更少的异常~简称不能比父类更坏。子类方法访问的权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么子类不存在覆盖的限制,相当于子类增加了一个全新的方法。
Overide方法需要注意的几点:
1.覆盖的方法的标识必须和被覆盖的方法的标识完全一致,才能达到覆盖的效果;
2.覆盖的方法的返回值必须和被覆盖的方法的返回值一致;
3.覆盖的方法所抛出的异常必须和被覆盖的方法抛出的一致,或者是其子类;
4.倍覆盖的方法不能为private ,否则在其子类中知识定义了一个新的方法,并没有对其进行覆盖。
回到Overload,有一个关键的问题:Overload的方法时候可以改变返回值的类型?
如果两个方法的参数列表完全一样,时候可以让ta们的返回值不同来实现重载,?这是不行的!例如我们调用map.remove(key)这个方法,这个方法有返回值,但是我们通常不会用到接收的返回结果的变量,加入这个类中有两个名称相同,参数列表 完全相同的方法,仅仅是返回值类型不同,此时java无法通过返回结果类型来判断。
当然如果几个Overload的方法的参数列表不同,ta们的返回值当然可以不一样。
Overload时需要注意的几点:
1.在使用重载时只能通过不同的参数演示。如不同的参数类型,不同的参数个数,不同的参数顺序(同一个方法类的各个参数类型不能一样);
2.不能通过访问全新,返回类型,抛出的异常进行重载;
3.方法的异常类型和数目不会对重载造成影响;
9601

被折叠的 条评论
为什么被折叠?



