方法的”重写”与”重载”......

1、方法的重写(方法的覆盖)Overriding

定义:方法的重写是基于Java中的继承关系。当一个类继承另外一个类的时候,那么该类(子类/派生类)就拥有了其父类(基类)的成员方法和成员变量。在子类当中,可以创建属于自己独有的成员,如果创建了一个与父类中名称相同、参数列表相同的方法,只是方法体中的实现形式不相同,以实现与父类的功能不相同,这种方式就被称为方法的重写,也被称为方法的覆盖。

注意:如果新的方法覆盖父类中的方法,需要调用父类中的方法时,用super()关键字。该关键字的具体用法以后详细介绍。

重写必须遵循的规则:两同两小一大!

两同:参数列表与方法名相同。

两小:子类的返回值和子类的异常小于父类的返回值与父类产生的异常。

一大:子类的访问修饰符大于父类的访问修饰符。

代码演示:比如我们有一个类叫做Animals,Animals类中有一个叫做Call,然后我们继承Animals又生成了Cat类和Dog类,Cat和Dog也分别有自己特别的叫声。

打印结果:

2、方法的重载 Overloading

定义:方法的重载是指在一个类当中,有多个方法,而且这些方法的名字是相同的,但是参数列表和返回值是不相同,当重载的时候,方法名的名称是被共享的,但是参数类型和参数个数是不相同的,返回值类型可以相同也可以不相同。

注意:我们不能根据返回值的类型来判断方法是否重载。

方法的重载分为构造方法的重载和普通方法的重载。

举个现实生活中的实例。假如你是个木工,我要让你制作桌子(返回值)。然后,我给了你紫檀木,你就可以制作一张紫檀桌子;我给了你黄花梨,你可以做黄花梨的桌子。这些不同材质的木料,就是参数。返回的都是桌子,但是具体使用哪个函数,就根据传入的木料不同来决定的。所以,可以根据所传递进来的不同参数,决定具体调用哪个函数。

重载的规则:

1、参数列表不相同

2、方法的访问修饰符可以不相同

3、抛出的异常可以不相同

代码演示如下:用来比较两个数值的大小。

打印结果:       分析:在上述的代码当中,方法1和方法2只是参数列表不相同,故是方法的重载,而方法1和方法4的参数列表相同,但是返回值类型不同,故不是方法的重载,方法1(2)和方法3的参数列表不同,访问修饰符也不同,故构成方法的重载。因此,看是否是方法的重载,关键在于参数列表的相同与否!

总结:

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

重写是外壳不变,核心变。也就是说方法名不变,参数不变,具体实现可以改变。一般是在父类中声明方法,在子类中重写。

重载是方法名不变,但参数一定要变。而且重载的方法一般都写在一个类中。用一张图来表示区别如下:

区别点方法的重写方法的重载
参数列表一定不可以修改必须修改
返回值类型一定不可以修改可以修改
异常可以减少或者删除,但是不可以抛出新的异常或者更广的异常可以修改
访问一定不可以做更加严格的限制(可以降低限制)可以修改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值