java 重写 与 重载 区别

来源:互联网 发布:书生阅读器windows版 编辑:程序博客网 时间:2024/06/03 18:28

override->重写(=覆盖)、 overload->重载

override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。 

重写(覆盖)的规则: 
   1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 
   2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。 
   3、重写的方法的返回值必须和被重写的方法的返回一致; 
   4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类; 
   5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。 
   6、静态方法不能被重写为非静态的方法(会编译出错)。 

overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。 
重载的规则: 
   1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样); 
   2、不能通过访问权限、返回类型、抛出的异常进行重载; 

   3、方法的异常类型和数目不会对重载造成影响; 


总之:

1.重写必须继承,重载不用。
2.重写的方法名,参数数目相同,参数类型兼容,重载的方法名相同,参数列表不同。
3.重写的方法修饰符大于等于父类的方法,重载和修饰符无关。
4.重写不可以抛出父类没有抛出的一般异常,可以抛出运行时异常


知识补充网站.点击打开链接

0 0
原创粉丝点击