重载:
同一个类中包含了两个或两个以上方法名相同的方法,但是参数的列表不同,这种情况被称为方法重载(overload)。
返回值类型、修饰符等,与方法重载没有关系,只与参数列表有关。
如:
public void Overload(int a, int b) {
}
public void Overload(int a, float b) {
}
public void Overload(int a, int b,int c) {
}
public int Overload(int a, int b) { //这不叫重载,同时存在会报错
return a+b;
}
private void Overload(int a, int b) { //这也不叫重载
}
Java在调用方法时,会根据参数的不同,自动选择合适的重载函数,不会出现错误。
重写:
重写概念是相对于两个类而言的,在子类中创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,用来实现不同于父类的功能,这种方式被称为方法重写(override),又称为方法覆盖。
例如:@Override下即为重写
public class Abstract {
//定义形状抽象类
public abstract class Shape {
public int width; // 长度
public int height; // 高度,不是宽度。
public Shape(int width, int height) {
this.width = width;
this.height = height;
}
// 定义抽象方法,计算面积area,定义抽象类周长length
public abstract double area();
}
//又定义抽象长方形类,继承形状类
public abstract class Square extends Shape{
public Square (int width,int height){
super(width, height );
}
@Override
public double area() { //重写父类抽象方法
return width*height;
}
注意:声明为 final 的方法不能被重写,父类的成员方法只能被它的子类重写。
区别:
其实理解了这俩的概念自然就知道区别了,重载是在一个类中多个同名方法;重写是子类继承父类的方法,将其重新定义,赋予新功能。
Java小白修炼手册