赞
踩
在Java中,Overload(重载)和Override(重写)是两个非常重要的概念,它们在面向对象编程中起着不同的作用。以下是它们之间的主要区别,并通过例子进行说明:
Overload(重载)
定义:在同一个类中,方法名相同但参数列表(参数类型、参数数量或参数顺序)不同的多个方法。
特点:
发生在同一个类中。
方法名必须相同。
参数列表必须不同(参数类型、参数数量或参数顺序)。
返回类型可以相同也可以不同(但在Java中,通常不用于区分重载方法)。
示例:
java
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
// 另一个示例,参数数量不同
int add(int a, int b, int c) {
return a + b + c;
}
}
在这个例子中,Calculator类有三个名为add的方法,但由于它们的参数列表不同,所以它们是重载方法。
Override(重写)
定义:在子类中,有一个与父类同名、同参数列表、同返回类型(或协变返回类型)的方法,则称子类中的该方法为父类同名方法的重写。
特点:
发生在子类与父类之间。
方法名、参数列表和返回类型(或协变返回类型)必须相同。
子类方法的访问权限不能低于父类方法的访问权限(如父类方法为public,则子类方法也必须是public)。
子类方法抛出的异常类型必须是父类方法抛出异常类型的子集或者相同。
示例:
java
class Animal {
void makeSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override // 使用@Override注解来表明这是一个重写的方法
void makeSound() {
System.out.println("The dog barks");
}
}
在这个例子中,Dog类继承了Animal类,并重写了makeSound方法。当调用Dog对象的makeSound方法时,将执行Dog类中的方法,而不是Animal类中的方法。
总结
Overload(重载):同一类中,方法名相同但参数列表不同。
Override(重写):子类与父类之间,方法名、参数列表和返回类型(或协变返回类型)相同。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。