方法重载与方法重写
1、方法重载
1.1 什么是方法重载?
- 在同一个类中有多个(两个及以上)同名函数,被称作方法重载。
1.2 方法重载的要求
- 函数名一致
- 参数列表不同(参数个数不同,或者相同位置对应的参数类型不同)
- 与返回值类型无关,与权限修饰符无关
public class Dome1 {
// 方法重载:同类同函数名,形参列表不能相同,与返回值无关,与权限修饰符无关。
private short test() {
short aa = 4;
System.out.println("无参test函数,返回值类型short");
return aa;
}
protected String test(String s) {
System.out.println("String形参类型test函数,返回值类型String");
return s;
}
default int test(int count) {
System.out.println("int 形参类型test函数,返回值类型 int");
return count;
}
public void test(String s, int count) {
System.out.println("String + int 多形参类型test函数");
}
}
2、方法重写
2.1 什么是方法重写?
- 在继承中,子父类出现了同名的函数,叫做方法重写。
2.2 方法重写的前提
- 在继承关系中,父类的方法不能满足子类的需求,这时就需要使用方法重写。
2.3 方法重写的要求
- 子类和父类的函数名及形参列表必须一致
- 子类的权限修饰符必须要大于或等于父类的权限修饰符
- 子类的返回值类型必须要小于或等于父类的返回值类型
- 子类抛出的异常类型必须要小于或等于父类抛出的异常类
class Father {
// test 重载方法:同类同函数名,形参列表不能相同,与返回值无关。
private static short test() {
short aa = 4;
System.out.println("无参test函数,返回值类型short");
return aa;
}
protected String test(String s) {
System.out.println("String形参类型test函数,返回值类型String");
return s;
}
public int test(int count) {
System.out.println("int 形参类型test函数,返回值类型 int");
return count;
}
public static void test(String s, int count) {
System.out.println("String + int 多形参类型test函数");
}
}
// 子类继承父类,当父类函数不满足子类的需求时,重写父类的方法
class Son extends Father {
// 子类的 函数名与形参列表 必须与父类一致。
// 权限修饰符 必须大于或等于父类权限修饰符。
// 返回值类型 必须大于或等于父类返回值类型。
// 抛出的异常类型 必须大于或等于父类抛出的异常类型。
@Override
public String test(String s) {
return "父类权限修饰符是 protected,子类权限小于父类时报错";
}
@Override
public int test(int count) {
System.out.println("当返回值类型与父类返回值类型不同时,编译报错");
return super.test(count);
}
}
方法重载与方法重写都是java多态应用的表现形式。