重写和重载

重写:当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。
重载:一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
实际操作中,个人印象是重写一般与@Override有关。有时编译器会报错,有时则不会。
那么,就让我们来就几种情况分析一下:
1.父类和子类:

这里我插入了父类创建了一个fatherFunc的方法
这里父类创建了一个fatherFunc的方法
这里我定义一个子类,可以看到编译器是没有报错信息的。
这里我定义一个子类,可以看到编译器是没有报错信息的。
我在子类里面写一个和父类名字和参数都完全相同的类,父类和子类是可以建立起联系的
我在子类里面写一个和父类名字和参数都完全相同的类,父类和子类是可以建立起联系的这里我把返回值修改为String,可以看到编译器识别到重写的方法返回值发生了变化,不再符合重写的规则。
这里我把返回值修改为String,可以看到编译器识别到重写的方法返回值发生了变化,不再符合重写的规则。修改了参数并且增加了@Override后也是一样,不符合重写的规则(不加@会被认为是另一个跟父类方法没关系的方法。)
修改了参数并且增加了@Override后也是一样,不符合重写的规则(不加@会被认为是另一个跟父类方法没关系的方法。)

这里我把父类修改为抽象类
这里我把父类修改为抽象类

子类报错了,提示必须实现父类的抽象方法

子类更改返回值和参数也同样不行
我们再测试下接口的情况,新建一个接口用来被实现
我们再测试下接口的情况,新建一个接口用来被实现
子类接口重写后报错解除
子类接口重写后报错解除
更改参数或返回值报错,提示不符合重写规则
更改参数或返回值报错,提示不符合重写规则
到这里,可以简单总结一下:
1.实体类继承,重写不强制,如果存在不符合规则的同名方法,子类的方法会被认为是一个跟父类没关系的新方法。
2.子类实现抽象类继承,子类接口实现必须重写抽象类和接口中的抽象方法。
3.重写的方法体可以和父类一样,也可以不一样。但是返回值,名字,参数必须和父类相同。
关于重载就简单多了。

在这里插入图片描述
可以看到,这些java内置的同名方法,可以称作重载。虽然重载翻译成Overload 但是千万注意,根本没有@Overload注解。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
参数相同是不可以的。
这里可以总结一下重载了:
1.重载发生在单个类的内部。
2.方法名必须一致,参数必须不一致,返回值可以一致也可以不一致。方法体可以一致,也可以不一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值