重载和重写的区别
1.重载(Overload)
重载方法名相同,参数列表不同(参数个数不同,参数类型不同,参数列表不同)。注:重载中返回值类型,方法修饰符可以不同,但是返回值类型,修饰符不同不能判断是否为重载。
2.重写(Override)
1.方法名相同,参数列表相同
2.返回值为基本类型,则返回值类型相同(除子类返回值是父类返回值的子类)
3.子类抛出的异常不能比父类大
4.子类方法修饰符不能小于父类
举例:
1.方法名相同,参数列表相同
public class OverrideDemo extends ParentOverrideDemo {
@Override
protected void save(int a) {
super.save(a);
}
}
class ParentOverrideDemo{
protected void save(int a){
}
}
参数列表不同:
2.返回值为基本类型,则返回值类型相同(除子类返回值是父类返回值的子类)
public class UserSon extends UserPerson {
}
public class OverrideDemo extends ParentOverrideDemo {
@Override
public UserSon save(int a) {
return null;
}
}
class ParentOverrideDemo{
public UserPerson save(int a){
return null;
}
}
子类的返回值类型大于父类:
3.子类抛出的异常不能比父类大
public class OverrideDemo extends ParentOverrideDemo {
@Override
protected void save(int a) {
throw new NullPointerException();
}
}
class ParentOverrideDemo{
protected void save(int a){
throw new NullPointerException();
}
}
异常比父类大:
4.子类方法修饰符不能小于父类
子类修饰符小: