重写与重载的区别---Java

版权声明:转载请标明附带连接标明出处 https://blog.csdn.net/Hollake/article/details/89481514

每次复习完过一段时间就忘,感觉脑子秀逗了一样,可能还是理解的不够深刻,总结记录一下

重载(Overloading):

  • 存在于一个类中
  • 同名不同参的方法,那么就成为重载,不同参的意思是(参数个数不同、参数类型不同、参数顺序不同
  • 记住和返回值没有半毛钱关系,爱返回什么就返回什么,只要满足第一条就是重载。

重写(Overriding):

  • 存在于父类和子类之间
  • 父类和子类中重写的方法必须同名同参同兼容返回值(相同的参数个数、相同的参数类型、相同的参数顺序),同兼容是指重写方法的返回值必须是被重写方法的子类或者接口的实现类,比如说他爹是返回值是List接口引用,那么他儿子覆写他爹的方法返回值是可以使ArrayList,或者说他爹是HashSet类,他儿子是LinkedHashSet,当然他爹和他儿子是同返回值肯定也是可以的。
  • 访问修饰符的限制一定要大于等于被重写方法的访问修饰符(public>protected>default>private
  • 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常,还是那句话,他儿子的异常要么和他爹是一个异常类,要么是他爹的子类,而且不能抛出他爹没有的异常

重载(Overloading)和重写(Overriding)的区别?

重载存在于一个类中,是java运行时多态的表现,而重写存在于父类和子类中,是java编译时多态的表现。对于重载来说,重载方法和被重载方法必须方法名相同,参数列表不同(参数个数不同、参数类型不同、参数顺序不同,三者满足其一),对于返回值没有特殊要求,不能根据返回值进行判断;对于重写来说,重写方法和被重写方法必须同名同参同兼容返回值(相同的参数个数、相同的参数类型、相同的参数顺序,三者必须全部满足),对于访问修饰符,重写方法的访问修饰符权限必须大于被重写方法的访问修饰符public>protected>default>private,重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。

猜你喜欢

转载自blog.csdn.net/Hollake/article/details/89481514