请老师看下这道题是否出的有问题?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2023-07-25 15:33:24

同学你好,题目是没有问题的。

    同学选择的D选项是会报错的,因为在继承关系中,子类会继承父类的方法,此时如果在子类中声明方法时,必须保证方法至少满足以下一个条件:

        1.新方法与父类方法完全没有关系,通常是指方法名不同;

        2.新方法与父类方法名相同,且为父类方法的重写:方法名相同,参数列表相同,返回值类型与父类方法相同(或者为父类方法返回值类型的子类),抛出的异常相同(或者为父类方法抛出异常类型的子类),其中抛出异常部分会在后面课程中介绍,此处可以先不去在意;

        3.新方法与父类方法名相同,且为父类方案的重载:方法名相同,参数列表不同。

    此时我们再来分析D选项,方法名与父类是相同的,那么不符合条件1,则必须满足条件2或者条件3。再看参数列表,与父类是相同的,那么显然不符合重载的语法,条件3也不满足。那么就必须满足条件2的要求,而条件2要求返回值类型与父类方法相同(或者为父类方法返回值类型的子类),而int与short显然不同且互相没有继承关系,那么也不满足条件2。

    那么,三个条件都没有满足,编译就会报错了。

祝学习愉快~

  • 提问者 albert_aGHTZ7 #1

    子类在重写父类的方法时,访问修饰符private范围比protected小。那B,C应该是不对的吧?

    2023-07-26 22:17:08
  • 提问者 albert_aGHTZ7 #2

    明白了,这种题型考察的是A是重写,C是重载。是写在一块的。我把这道题理解为分开的答案。


    2023-07-26 22:19:15
  • 提问者 albert_aGHTZ7 #3

    答这道题时,我只是看到访问修饰符就把答案给选了。

    2023-07-26 22:20:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java工程师 2024版
  • 参与学习       2020    人
  • 提交作业       1249    份
  • 解答问题       1202    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师