关于java面向对象测试卷的两个问题

关于java面向对象测试卷的两个问题

请问一下这两道题哈

第一题:子类重写父类,访问修饰符不是要大于等于父类的么 这题的答案是对的么

第二题:请问是不是这样理解啊:在实例化Child类时,要去调用其父类Parent2的构造函数,而在调用Parent2的构造函数时,又要先去调用Parent的构造函数,而因为Parent的构造函数需要一个参数,而Child没有能够传入参数,所以导致编译错误啊

非常感谢!

http://img1.sycdn.imooc.com/climg//5919af690001069e18280708.jpg

http://img1.sycdn.imooc.com/climg//5919af700001548218380800.jpg


正在回答

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

3回答

问题一:返回值相同才算重写,所以A选项不对

问题二:这样理解,默认情况下,构造方法的第一句都隐含着一条语句:super();,即调用父类的无参的构造方法,除非显式调用其他的有参构造方法。创建Child对象时,Child构造方法是默认的无参构造方法,所以需要去调用Parent2的无参构造方法。而Parent2的构造方法中,也是默认调用了父类无参的构造方法,而当发现父类没有无参的构造方法时,就发生了编译错误。为什么Parent1中没有无参的构造方法?因为一旦有了有参的构造方法,则默认的无参构造方法就不存在了!

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • hpbrave 提问者 #1
    谢谢蛋糕助教答复,还想再请问下啊: 问题一中的D选项,访问修饰符是private,是不是说明D中这个方法并不是子类重写父类的方法,而是子类特有的方法呢,那如果是这样的话,选项A为什么不能作为子类特有的方法呢 问题二:是不是所有的父类都最好有一个无参构造方法(默认的或自定义的),不然子类如果不显式地调用父类带参构造就无法通过编译 非常感谢!
    2017-05-16 14:44:32
  • 好帮手慕珊 回复 提问者 hpbrave #2
    问题一:选项D不算重写,就是子类的一个 普通方法,名字虽然也是method1,但是参数不一样,Java会认为这样可以。选项A是因为方法的名字和参数都一样,会被认为是要进行重写,但又不是合法的重写,所以就报错了。这个跟Java本身对是否编译正确的判断机制有关系,我们不需要看具体代码怎么写的,只要从应用上知道哪种方式是对的,哪种方式是错的就可以了。问题二:确实是最好有一个无参的构造方法。祝学习愉快!
    2017-05-16 18:33:19
  • hpbrave 提问者 #3
    这下明白了 非常感谢!
    2017-05-16 18:38:09
飞思雨 2017-07-28 17:58:43

第1题中由于子类会继承父类中的method1方法,D选项方法名与父类相同,参数不同,应该属于重载吧。

慕先生1394505 2017-05-15 22:00:09

问题一:它没有说都是重写的方法,所以可能是private修饰符的方法可能会被认为不是重写的方法,而是私有的方法

问题二:每个类实例化的时候都会加载父类构造方法,直到最大的Object,所以一直往上加载parent1,它作为父类没有无参构造方法,所以出现编译错误

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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