方法签名:方法名和参数
返回值不算作方法签名
但如果出现一样的方法签名但返回值不同的两个方法,jvm会报错
子类可以重写父类的方法
public class Person{
public void run(int a){
System.out.println("Person run");
}
}
public class John extends Person{
@Override
public void run(int a){
System.out.println("John run");
}
//参数不一样,不是重写。是重载,是子类定义的新的函数了 不要加@Override注释
//@Override //Compile Error
public void run(String a){
System.out.println("Overload");
}
@Override
public int run(int a){
//Error!,父类中是void,这不是重写,也不是重载,即同一个类,或继承关系中不能存在方法签名相同而返回类型不同的情况!
return 0;
}
}
但是实际上,子类继承父类,并重写父类方法时可以省略 @Override,它是非必须的,不加也会重写覆盖,但写了 @Override会提醒编译器,或者提高代码可读性。