重载(overlload)和重写的区别。
重载:方法名一样,参数类型,参数个数,返回值不一样或者一样的多个方法,就是方法重载、
- 定义:在子类中可以根据需要对从父类中继承来的方法进行改造,也称为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。
- 要求:
- 子类重写的方法必须和父类被重写的方法具有相同的方法名称,参数列表。
- 子类重写的方法的返回值类型不能大于父类被重写的方法的返回值类型。(子类的权限可以比父类大,或者相同;对比煎饼果子,只有摊的大,才能覆盖掉)
- 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限。
- 子类不能重写父类中声明为private权限的方法。这种情况(不是重写),重写了之后,调用的还是父类的方法
- 子类方法抛出的异常不能大于父类被重写方法的异常。
- 注意:子类与父类中同名同参数的方法必须同时声明为非static的(即为重写),或者同时声明为static(不是重写)。因为static方法是属于类的,子类无法覆盖父类的方法。
static,final,abstract 这样的关键字‘
子类和父类中的同名同参数的方法要么都声明为非static的(考虑重写),要么都声明为static的(不是重写).
1
通过方法名和形参列表(一样) 才能确定是唯一的方法。
6.重写的规定:
方法的声明: 权限的修饰符 返回值类型 方法名(形参列表) throws 异常的类型{
//方法体
}
6,返回值类型:
父类被重写的方法的返回值类型是void,则子类重写的方法的返回值只能是void,
父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类型或者A类的子类。
父类被重写的方法的返回值类型是基本数据类型(比如double),则子类重写的方法的返回值类型必须是相同的基本数据类型(必须也是double)。
子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型。
Exception *的异常
runTimeException 子类的异常
6,父类定义方法:
//父类定义方法:
public Object info(){
return null;
}
//子类定义方法
public String info(){
retutn XXX
}
这种情况也是重写。
练习:如果现在父类的一个方法定义成private的访问权限,在子类中将此方法声明为default的访问权限,那么这样还叫重写吗?(NO)
子类不能重写父类中声明为private权限的方法.