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

JAVA基础——重载(overload)和重写( override)

2020-02-02 03:54 211 查看

1. 重载(overload)和重写( override)
方法签名:方法名以及参数,返回类型不是方法签名的一部分。
重载:
重载:重载是编译时多态,即静态多态。
发生在一个类里,两个或多个方法方法名相同,但是参数类型,个数或顺序不同。
1、重载是一个类中多态性的一种表现:
以统一的方式处理不同类型数据,调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法。
2、可以有不同的访问修饰符;
3、可以抛出不同的异常;
例:重载:两个参数列表类型个数一样,返回值不一样,是不是重载。
注:
(1)子类中不能重写父类中的final方法;
(2)子类中必须重写父类中的abstract方法 ;

重写:
子类重写父类的方法:方法名以及参数相同,返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型。又称覆盖。
例:父类是私有的,子类写了一个方法跟父类一样,这种情况是不是重写或覆盖?
super:指示编译器调用父类方法的特殊关键字。
具体:
1、子类函数的访问修饰权限不能少于父类的;(public>protected>default>private)
2、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。
例如:父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。
3、父类方法被final时,无论该方法被public、protected及默认所修饰,子类均不能重写该方法。

面试题:

重载和重写的区别,重载的方法能否根据返回类型进行区分?

答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
进阶的小高 发布了2 篇原创文章 · 获赞 0 · 访问量 93 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: