首页 > 学院 > 开发设计 > 正文

重载重写

2019-11-14 10:57:45
字体:
来源:转载
供稿:网友

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"); }}
上一篇:java中的变量

下一篇:25.Yii 模块

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表