Java中方法的重载与重写
1、方法的签名
我们知道,方法的定义是由五个要素组成的,分别是修饰符、返回值类型、方法名称、方法参数以及方法体。那么将方法名称和方法参数放在一起,则称为这个方法的签名,简称方法签名。
在Java中,同一个类中两个不同的方法不可以出现相同的方法签名。也就是说方法签名是方法唯一的标识。如果相同那么就是同一个方法,Java不允许声明相同的方法,否则编译不通过。
2、方法的重载(Overload)
前面说的方法签名是指方法名称和参数列表的统称。如果同一个类中,两个方法的方法名称相同,但是参数列表不同,那么就规定这是方法的重载。
2.1、方法重载定义
在同一个类中,方法名称相同,参数列表不同,方法体不同,则称为方法重载。
在Java中,方法的重载是发生在编译期间的。编译器会在编译期间,将根据方法的参数列表自动绑定调用哪个方法。
所以重载归结为一句话:“重载看参数”
2.2、方法重载的规则
方法的重载规则如下:
<1>方法名称必须相同,参数列表必须不同
<2>参数列表不同指的是参数个数、参数类型、参数类型位置的不同的,而不是指参数名称、参数位置不同。
<3>重载只和方法名称以及参数列表有关,与其他的无关。
<4>重载发生在同一个类中,或者子类中
3、方法的重写(Override)
3.1、重写的定义
方法的重写:发生在父子类中,方法名称必须相同,方法参数必须相同,方法体不同。
在Java中,方法的重写是发生在运行期间的。编译器会在运行期间,将根据调用方法的对象类型自动绑定调用哪个方法。
所以重写归结为一句话:“重写看对象”
3.2、重写的规则
重写规则:“两同两小一大”
<1>两同:方法名称相同,方法参数相同
两小:
<2>返回值类型,子类小于等于父类返回值类型
返回值类型分为三种情况:
void类型:当方法无返回值时,重写时候,父子类返回值类型必须相同,都为void类型。
基本数据类型:当方法返回值是基本数据类型时,重写时候,方法的返回值类型必须一致。
引用数据类型:当方法返回值是引用数据类型时,重写时候,方法的返回值类型子类必须小于或等于父类的方法返回值类型。
注:由于SubFuncDemo是FuncDemo的子类,所以SubFuncDemo类型是小于FuncDemo类型的。
<3>方法抛出的异常:子类小于等于父类抛出的异常
一大:
<4>方法的访问修饰符:子类大于父类的访问修饰符
4、理解“重载看参数,重写看对象”
要理解“重载看参数,重写看对象”看下面这道例题:
综上,Java中方法的重载与方法的重写介绍完了。
本文相关词条概念解析:
方法
(1)[method;way;means](2)古指量度方形的法则(3)现指为达到某种目的而采取的途径、步骤、手段等方法的含义较广泛,一般是指为获得某种东西或达到某种目的而采取的手段与行为方式。它在哲学,科学及生活中有着不同的解释与定义。方法和手段是人们成功办事,或管理者实现管理目的的不可缺少的中介要素。方法虽然也被人们称之为活动的手段,但它不是物化了的手段,是人类认识客观世界和改造客观世界应遵循的某种方式、途径和程序的总和。方法的一个同义词是技术,给人的感觉,方法通俗一些,技术高雅一些。