A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阿姆1Q84 中级黑马   /  2016-6-11 21:14  /  1179 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

分析如下所示的Java代码,则选项中的说法正确的是( c)。
class Parent{
   publicString name;
   publicParent(String pName){
      this.name= pName;
   }
}
public class Test  extends Parent {  //1
   publicTest(String Name){               //2
      name="hello";          //3
      super("kitty");          //4
   }   
}
    A.  第2行错误,Test类的构造函数中参数名称应与其父类构造函数中的参数名相同
    B.  第3行错误,应使用super关键字调用父类的name属性,改为super.name="hello";
    C.  第4行错误,调用父类构造方法的语句必须放在子类构造方法中的第一行
    D.  程序编译通过,无错误

答案为什么是C  老师没讲,后天就开始讲API了.问问大神们

9 个回复

倒序浏览
其实答案已经解释的很明白,super()父类构造方法必须放在子类构造方法中的第一句,而第四行的super()放在了第二句,所以会编译错误,编译的时候会提示你super()需要放在第一句
回复 使用道具 举报
azraeljia 发表于 2016-6-11 21:20
其实答案已经解释的很明白,super()父类构造方法必须放在子类构造方法中的第一句,而第四行的super()放在了第 ...

这是概念 问题么?就这么定义么?SUPER必须放在子类构造方法的第一句?
回复 使用道具 举报
赞同楼上的说法
回复 使用道具 举报
阿姆1Q84 发表于 2016-6-11 21:23
这是概念 问题么?就这么定义么?SUPER必须放在子类构造方法的第一句?

对,就是这么定义的,super()必须放在第一
super(…)或者this(….)必须出现在构造方法的第一条语句上,只能出现其一
上面这句话是课堂的笔记
回复 使用道具 举报
azraeljia 发表于 2016-6-11 21:26
对,就是这么定义的,super()必须放在第一
super(…)或者this(….)必须出现在构造方法的第一条语句上,只能 ...

感谢感谢~!
回复 使用道具 举报
呵呵,我一开始纳闷的是可以直接在super内放入"Kitty",不是name,
回复 使用道具 举报
友情提示....虽然super()和this()只能存在一个,且在第一行.......但是super和this可以共存!!!!
回复 使用道具 举报
还没学到呢,继续努力中
回复 使用道具 举报
这个题的A也是正确的 , 子类的构造方法             publicTest(String Name){  }  这句话的String  name   Name小写     
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马