重载和重写的区别
重载(overload) | 重写(override) | |
---|---|---|
发生的类不同 | 发生在同类中 | 发生在子父类之间,肯定不是一个类 |
方法名 | 必须相同 | 必须相同 |
参数列表 | 必须不同 | 必须相同 |
权限修饰符 | 不影响 | 重写的方法访问权限必须大于等于原方法 |
异常 | 不影响 | 重写的方法不能抛出更多的异常 |
返回值类型 | 不影响 | 重写的方法的返回值类型必须和原方法兼容,代表可以不是完全一致 |
重写override
public class Father {
public static void main(String[] args) {
new Son().doSomething();
}
public void doSomething(){
System.out.println("爸爸要吃饭了");
}
}
class Son extends Father{
@Override
public void doSomething() {
System.out.println("儿子我也要吃饭了");
}
}
重载overload
较常见于类的构造方法中,编译器通过参数的个数和类型来识别不同的构造方法。