Java中的“重载“与“重写“

目录

1.重载

2.重写

3.重载与重写的区别

1.存在位置不同

2.定义方式不同

3.作用时期不同


1.重载

        在同一个类中,会有几个或多个返回值类型、方法名一致的“方法”,通过传入参数的不同,来实现相似却又不相同的功能(如下)

 

        上面这个Demo02类里定义了三个方法名相同的hello方法,这三个方法的返回值类型都是String,唯一不同的是它们的参数

        当调用hello方法时会根据传入参数的个数和类型来自同匹配具体所调用的方法:

        像这样定义方法的形式称为方法的重载;

2.重写

        重写发生在子类与父类之间:子类中定义了一个与父类方法签名完全相同的方法(即返回值类型、方法名、参数完全相同),在子类中对该方法进行覆盖(实现),改变这个方法在父类中的行为,这样定义方法的形式成为方法的重写

         上面Student1类是Person1类的子类,在两个类中分别有两个方法,这两个方法签名完全相同

         由于run()方法在子类中进行了重写,所以在创建了指向Student1类的对象后,调用的是在子类中重写后的run()方法

        像这样定义方法的形式成为方法的重写

3.重载与重写的区别

1.存在位置不同

        a.重载发生在同一个类中

        b.重写发生在子类中

2.定义方式不同

        a.重载要求定义时方法的参数列表必须不同(顺序、个数、类型),返回值和访问修饰符可以不同。

        b.重写要求方法名和参数列表必须相同,且返回值类型和抛出异常的范围必须小于父类,访问修饰符的范围大于父类

3.作用时期不同

        a.重载发生在编译期,根据编写代码时传入参数不同即可判断所调用的方法

        b.重写发生在运行期,只有在运行时才能识别调用的方法属于父类还是子类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值