overload(重载)
在同一个类、子父类中
方法名相同,与返回值无关
参数表不同(个数、顺序、类型),比如以下都构成重载:
public void fun(int i) {
}
public int fun(int i,String s) {
}
public void fun(String s,int i) {
}
public String fun(String s,int i,int j) {
}
override(重写、覆盖、复写)
方法名(参数表)必须相同
修饰符:子类的修饰符范围 >= 父类修饰符范围
返回值:基本数据类型、void——子类返回值类型 = 父类返回值类型
引用数据类型——子类返回值 <= 父类返回值
声明异常:子类异常范围 <= 父类异常范围
class A{
A(){
}
public void apple() {
System.out.println("apple");
}
protected int banana(int i) {
return i;
}
}
class B extends A{
B(){
}
public void apple() {
System.out.println("apple");
}
public int banana(int i) {
return i;
}
}
无法构成覆盖的情况(3种)
private修饰的方法不构成覆盖,没有语法错误;
static修饰的方法不构成覆盖,没有语法错误;
final修饰类时,该类不能被继承。