一、方法的重载
是指在同一个类中定义多个同名的方法,它们的参数类型不同或参数个数不同
- 代码实现
public class TestOverload {
public static void print(String str) {
System.out.println(str);
}
public static void print(int num) {
System.out.println(num);
}
public static void print(int num, String str) {
System.out.println(num + str);
}
public static void print(String str, int num) {
System.out.println(num + str);
}
public static void main(String[] args) {
print("aaa");
print(123);
print(123, "aaa");
print("aaa", 123);
}
}
-
重载规则
方法名相同、不同的参数类型、不同的参数个数、不同的参数顺序
根据参数个数和类型进行匹配查找到对应的方法进行调用
发生在同一个类 -
注意点
1、不能通过方法的访问权限、返回值类型和抛出的异常类型的不同进行重载。
二、方法的重写Override
重写是子类方法覆盖父类方法,来达到不同的作用
- 代码实现
class A{
public void printf() {
System.out.println(123);
}
}
class B extends A{
@Override
public void printf() {
System.out.println("aaa");
}
}
public class TestOrride {
public static void main(String[] args) {
B b=(B) new A();
b.printf();
}
}
运行结果:aaa;
- 重写规则
子类的方法名,方法的返回值类型,方法的参数必须和基类的一致,如果有抛出异常,那么子类抛出的异常的类型必须和基类的一致 - 注意点
如果基类的方法是private的,子类只是定义了一个和基类方法名相同的方法,并没有实现重写。
三、重载和重写的区别
- 重载是同一个类中方法之间的关系,是水平关系;重写是子类和父类直接的关系,是垂直关系。
- 重载是多个方法之间的关系;重写只能是一个方法或一对方法产生关系
- 重载要求参数列表不同;重写要求参数列表相同。
- 重载是根据调用时的实参表与形参表来选择方法体的;重写关系,调用方法体是根据对象的类型(对象的存储空间类型)来决定的。