Java中的overload VS override


一,overload:一般翻译为重载。当一个类中出现两个或者两个以上方法的名称相同,方法的参数列表各不相同(即参数个数不同或者参数的类型不同)时,我们称这些方法之间构成了重载关系。

1,满足overload的几个条件:

a,发生在同一个类的两个或者两个以上方法之间。

b,方法名称相同,方法的参数列表不同(包括参数的个数不同或者参数的类型不同)。

2,重载对方法的返回值的类型不作要求,可以相同,也可以不同。

二,override:可以翻译为覆盖、复写、重写。当子类中出现和父类一模一样的方法时,子类对象调用该方法会运行子类方法的内容,如同父类的方法被覆盖一样。

1,满足override的几个条件:

a,发生在子类与父类之间。

b,子类中的方法与父类中要被覆盖的方法一模一样,包括方法名称和方法的参数列表均要求相同。在jdk1.5版本以前,还要求方法的返回值类型与父类中被覆盖的方法的返回值类型相同。从jdk1.5开始方法的返回值类型是父类中被覆盖的方法的返回值类型的子类即可。

2,关于overrid的几点注意事项:

a,覆盖时,子类方法的权限必须大于或等于父类中被覆盖方法的权限。

b,静态方法只能覆盖父类中的静态方法,不能覆盖父类中的非静态方法。

c,子类不能覆盖父类中被private或final修饰的方法。

d,子类覆盖父类方法时,如果父类的方法抛出异常,那么子类的覆盖方法只能抛出父类的异常或者该异常的子异常。

e,如果父类的方法抛出多个异常,那么子类在覆盖父类方法时,要抛出父类方法异常的子集。

d,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,不可以抛出异常。如果子类发生了异常,必须在子类中进行try处理。


3,覆盖的应用:

当子类需要父类的功能,但是功能主体子类有自己特有的内容时,可以复写父类中的方法,这样既沿袭了父类的功能,又定义了子类特有的内容。










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章