一、方法的重载
(1)重载的概念:在同一个类中,允许存在一个以上的同名方 法,只要它们的参数个数或者参 数类型不同即可
(2)重载的特点:与返回值类型无关,只看参数列表,且参数 列表必须不同(参数个数或参数类 型)。调用 时,根据方法参数列表的不同来区别
(3)重载示例:
//返回两个整数的和
int add(int x,int y){return x+y};
//返回三个整数的和
int add(int x,int y,int z){return x+y+z};
//返回两个小数的和
double add(double x,double y){return x+y};
二、方法出重写(override/overwrite)
(1)定义:在子类中可以根据需要对从父类中继承来的方法 进行改造,也称为方法的重 置、覆盖。在执行时, 子类的方法将覆盖父类的方法
(2)要求:①子类重写的方法必须和父类被重写的方法具有 相同的方法名称、参数列表
②子类的重写方法的返回值类型不能大于父类被 重写的方法的返回值类型
③子类重写的方法使用的访问权限不能小于父类 被重写的方法的访问权限
④子类不能重写父类中声明为private权限的方法
⑤子类方法抛出的异常不能大于父类被重写的方 法的异常
(3)注意:子类与父类中同名的方法必须同时声明非static(即 为重写),或者同时声明为 static的(不是重写)。因 为static方法是属于类的,子类无法覆盖父类的方法
(4)返回值类型:
①父类被重写的方法的返回值类型是void,则子 类重写的方法返回值类型只能是void
②父类被重写的方法的返回值类型是A类型(如 Object),则子类重写的方法的返回值类型可 以是A类或者A类的子类(如String)
③父类被重写的发放的返回值类型是基本数据 类型(比如double),则子类重写的方法的返 回值类型必须是相同的基本数据类型(必须也 是double)
三、区分方法重载和重写
①二者的概念
②重写和重载的具体规则
③*重载:不表现为多态性
*重写:表现为多态性
④重载编译、重写运行时确定
*重载:允许存在多个同名方法,而这些方法的参数不 同。它们的调用地址在编译期 就绑定了。Java重载 是可以包括父类和子类的,即子类可以重载父类的同 名不同参数的方法“早绑定”或“静态绑定”
*重写:只有等到方法调用的那一刻,解释运行器才会 确认所要调用的具体方法 “晚绑定”或“动态绑定”
本文来自尚硅谷宋红康老师的学习笔记