黑马程序员技术交流社区

标题: 关于子类继承父类的问题. [打印本页]

作者: 阿姆1Q84    时间: 2016-6-11 21:14
标题: 关于子类继承父类的问题.
分析如下所示的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了.问问大神们


作者: azraeljia    时间: 2016-6-11 21:20
其实答案已经解释的很明白,super()父类构造方法必须放在子类构造方法中的第一句,而第四行的super()放在了第二句,所以会编译错误,编译的时候会提示你super()需要放在第一句
作者: 阿姆1Q84    时间: 2016-6-11 21:23
azraeljia 发表于 2016-6-11 21:20
其实答案已经解释的很明白,super()父类构造方法必须放在子类构造方法中的第一句,而第四行的super()放在了第 ...

这是概念 问题么?就这么定义么?SUPER必须放在子类构造方法的第一句?
作者: tianzhu2725    时间: 2016-6-11 21:26
赞同楼上的说法
作者: azraeljia    时间: 2016-6-11 21:26
阿姆1Q84 发表于 2016-6-11 21:23
这是概念 问题么?就这么定义么?SUPER必须放在子类构造方法的第一句?

对,就是这么定义的,super()必须放在第一
super(…)或者this(….)必须出现在构造方法的第一条语句上,只能出现其一
上面这句话是课堂的笔记
作者: 阿姆1Q84    时间: 2016-6-11 21:33
azraeljia 发表于 2016-6-11 21:26
对,就是这么定义的,super()必须放在第一
super(…)或者this(….)必须出现在构造方法的第一条语句上,只能 ...

感谢感谢~!
作者: TheLittlePrince    时间: 2016-6-11 22:54
呵呵,我一开始纳闷的是可以直接在super内放入"Kitty",不是name,
作者: 善良的死神达乐    时间: 2016-6-11 23:36
友情提示....虽然super()和this()只能存在一个,且在第一行.......但是super和this可以共存!!!!
作者: 皮卡丘2016    时间: 2016-6-12 00:10
还没学到呢,继续努力中
作者: shenzhinishimen    时间: 2016-6-12 00:16
这个题的A也是正确的 , 子类的构造方法             publicTest(String Name){  }  这句话的String  name   Name小写     




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2