您的位置:首页 > 编程语言 > Java开发

java中重写与重载的区别

2010-09-09 00:56 676 查看
1.Overriding

Overriding是覆盖了一个方法并且对其重写,以求达到不同的作用。(即基调必须相同)对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。
重写的主要特点是:
1.方法名必须与被重写方法一致。
2.方法参数列表必须与被重写方法一致。
3.返回类型必须与被重写方法一致。
4.重写的方法必须提供比被重写方法更大的权限。
e.g.被重写方法为protected void Method(int i,double j),则重写方法可以为protected void Method(int i,double j)(一般如此),或者public void Method(int i,double j),但是不可以是private void Method(int i,double j)或缺省的package...
5.不能抛出新的异常或者"更宽的"异常。
6.被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
2.Overloading
Overloading是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法(以不同的基调来区分),然后再调用时,JVM就会根据不同的参数样式,来选择合适的方法执行(多态)。
主要特点是:
1.各重载的方法名一致。
2.各重载方法的参数列表不一样(包括参数类型,参数个数,参数顺序3项中的一项或多项)。

3.返回类型任意。(不能通过方法的返回值来区分重载方法。)
4.访问控制符任意。(不能通过方法的访问权限来区分重载方法。)
5.可以任意抛出自身的异常,而不管被重载方法。(不能通过抛出的异常来区分重载方法。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jvm