重载
在Java中一个很重要的概念是方法的重载,它是类名的不同表现形式。重载表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
public class Apple {
int sum;
String color;
public Apple(){}
public Apple(int sum){}
public int getApple(int num){
return 1;
}
public String getApple(String color){
return "color";
}
}
如上面所示,就有两种重载的方式,一种是Apple 构造函数的重载,一种是getApple方法的重载。
但是这样就涉及到一个问题,要是有几个相同的名字,Java如何知道你调用的是哪个方法呢?这里记住一点即可,每个重载的方法都有独一无二的参数列表。其中包括参数的类型、顺序、参数数量等,满足一种一个因素就构成了重载的必要条件。
请记住下面重载的条件
- 方法名称必须相同。
- 参数列表必须不同(个数不同、或类型不同、参数类型排列顺序不同等)。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以成为方法的重载。
- 重载是发生在编译时的,因为编译器可以根据参数的类型来选择使用哪个方法。
重写
方法的重写与重载虽然名字很相似,但却完全是不同的东西。方法重写的描述是对子类和父类之间的。而重载指的是同一类中的。例如如下代码
class Fruit {
public void eat(){
System.out.printl('eat fruit');
}
}
class Apple extends Fruit{
@Override
public void eat(){
System.out.printl('eat apple');
}
}
上面这段代码描述的就是重写的代码,你可以看到,子类Apple 中的方法和父类Fruit 中的方法同名,所以,我们能够推断出重写的原则
请记住下面重写的条件
- 重写的方法必须要和父类保持一致,包括返回值类型,方法名,参数列表也都一样。
- 重写的方法可以使用@Override注解来标识
- 子类中重写方法的访问权限不能低于父类中方法的访问权限。