方法的重载:同类中,方法名相同但参数列表不同。【参数列表:包括参数的类型及参数的个数】 方法的重写:发生在具有继承关系的子类中,子类覆盖父类的方法,是多态性的一种表现。【参数列表:必须与父类的方法一致】
方法重载时,发生在同一个类中,故方法的重载与修饰符无关。方法重写时,发生在子类中,子类中重写的方法的修饰符只能比父类更大不能更小。否则编译不通过。
注意:如果父类的方法修饰符为 PRivate ,那么就相当于子类新建了一个与父类同名的方法,但该方法并不是重写的,而是子类新建的方法。
方法重载时,发生在同一个类中,故方法的重载与返回值无关。方法重写时,发生在子类中,子类重写的方法的返回值一定要与父类一致。否则编译不通过。
方法重载时,方法的参数列表一定不同。包括参数的个数,参数的类型。方法重写时,参数列表一定相同。
方法重载时,与异常无关。方法重写时,子类方法异常只能抛出比父类异常更小的异常或父类异常的子异常。否则编译不通过。
方法发生重载时只与方法名及参数列表相关。 方法重写时,方法的返回值及方法名必须一致,方法的修饰符只能更大不能更小,异常只能比父类更小不能更大。
代码例子:
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"); }}新闻热点
疑难解答