课程 有错,对于方法重载的 内容
重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型,参数列表必须相同啊 ,本节中说参数列表可以不同,你这个 是方法重载,不是 方法重写,方法重写与方法重载不同,方法的重载是方法的参数个数或类型不同,方法名相同。
正在回答
重写时:名称一致是指方法名称必须一致,参数完全一致这里的参数是指参数类型呦,不包括参数的名字。
首先这里的@Override就可以解释呦,这个注解是专门用来验证是否是重写方法的。
其次,同学可以想一下,重载靠什么来区分要加载哪个方法呢?对,是传进来的参数,传进来参数的个数,以及参数的顺序,以及参数的类型。
如果同学还是不信,可以再来验证一下,我们写两个类型一样,个数一样的参数,只是名字不同,他不会构成重载,而是会报错哦。
那假如我们想解释一下为什么
那如果我们调用test方法,传一下字符串类型的参数“张三”进去,它没有办法分别我要去加载哪个方法。因为这两个参数都是一个String类型的。
那假如我们还有一个第三个方法,我们可以通过传入参数的类型是int类型的来选择我们要加载的方法,和参数的名字无关
如果还是理解不了,同学这里可以先记住呦。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
首先非常抱歉给同学带来不好的学习体验,这里其实老师并不是和上边无参的eat方法重写的比较,而是:和Animal中带参的eat方法的重写哦:
和Dog中这个方法
是重写的父类中的方法哦,不是与上边的无参的eat方法进行对比的。
如果同学这里有疑问,可以在子类的eat方法上写一个@Override验证一下。
这个注解就是验证是否是重写的方法,如果是,则不会报错,如果不是,则会报错。
2、重新的方法参数名真的无关哦,比如老师写个小例子,它要求的参数不一样是指,参数的类型,参数的顺序,以及参数的位置
public class Animal { public void test(String a) { System.out.println("我是父类"); } } public class Cat extends Animal { @Override public void test(String b) { System.out.println("我是子类"); } }
如果不是重写的方法,添加上@Override之后会报错呦。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星