重载重写

来源:互联网 发布:深圳电子产品出口数据 编辑:程序博客网 时间:2024/04/30 04:09

OverLoad 与 Override

方法的重载:同类中,方法名相同但参数列表不同。【参数列表:包括参数的类型及参数的个数】
方法的重写:发生在具有继承关系的子类中,子类覆盖父类的方法,是多态性的一种表现。【参数列表:必须与父类的方法一致】

1.修饰符:

方法重载时,发生在同一个类中,故方法的重载与修饰符无关。
方法重写时,发生在子类中,子类中重写的方法的修饰符只能比父类更大不能更小。否则编译不通过。

注意:如果父类的方法修饰符为 private ,那么就相当于子类新建了一个与父类同名的方法,但该方法并不是重写的,而是子类新建的方法。

2.返回值

方法重载时,发生在同一个类中,故方法的重载与返回值无关。
方法重写时,发生在子类中,子类重写的方法的返回值一定要与父类一致。否则编译不通过。

3.参数列表

方法重载时,方法的参数列表一定不同。包括参数的个数,参数的类型。
方法重写时,参数列表一定相同。

4.异常情况

方法重载时,与异常无关。
方法重写时,子类方法异常只能抛出比父类异常更小的异常或父类异常的子异常。否则编译不通过。

小结

方法发生重载时只与方法名及参数列表相关。
方法重写时,方法的返回值及方法名必须一致,方法的修饰符只能更大不能更小,异常只能比父类更小不能更大。

这里写图片描述

代码例子:

public class Test5 {public void test1(int a,String b){    System.out.println("test1");}public void test1(String b,int a){    System.out.println("test1 overload");}protected void test1() throws RuntimeException{    System.out.println("test1 overload 1");}//重载与返回值无关//  public int test1(){//      System.out.println("test1");//      return 0;//  }}class TestSub extends Test5{    //重写时,子类中只能抛出比父类更小的异常或父类异常的子异常    //重写时,子类方法的修饰符只能比父类大或与父类相同    public  void test1() throws ArrayIndexOutOfBoundsException{        System.out.println("sub test1");    }}
0 0
原创粉丝点击