重载与重写
1、 重载
重载:方法名相同而形式参数不同。(参数类型列表不同或参数顺序不同)
特点:
(1) 传入的数据类型小于方法中声明的参数类型,实际类型数据会被提升。(char类型略有不同,若无法找到接受char类型的参数则直接把char类型提升为int类型)。
(2) 若传入的实际参数大于重载方法中的参数类型,则通过类型转换来执行窄化转换。
(3) **不能通过返回值来区分重载方法。**即
public void example(){
}
//重载与返回值无关,所以即使返回值不同一个为void无返回值,一个为int返回值,也是重载了方法public void example()
public int example(int m,float f){
}
//不是重载,与返回值无关,参数列表及类型相同会报错。
public int example(){
}
在重载中,运用的是静态多分派,即根据静态类型确定对象,因此不能根据new的类型确定调用的方法
重写
方法重写应遵循“二同二小一大”原则:
“二同”:即方法名相同,形参列表相同;
“一小”:子类方法声明抛出的异常比父类方法声明抛出的异常更小或者相等;
“另一小”:子类返回类型小于等于父类方法返回类型;
“一大”:子类方法的访问修饰符应比父类方法更大或相等。
在重写中,运用的是动态单分配,是根据new的类型确定对象,从而确定调用的方法;