黑马程序员技术交流社区

标题: 关于继承的 [打印本页]

作者: 李凤鸣    时间: 2013-1-8 15:01
标题: 关于继承的
本帖最后由 张向辉 于 2013-1-16 12:08 编辑
  1. class Person
  2. {

  3.     private String name;
  4. Person(String name)
  5. {
  6.     this.name=name;
  7. }
  8. void setName(String name)
  9. {
  10.     this.name=name;
  11. }
  12. public String getName()
  13. {
  14.     return name;
  15. }
  16. }
  17. class Student extends Person
  18. {
  19. public Student(String name) {
  20.     super(name);
  21. }
  22. }
复制代码
类函数Student 中super(name);
指的是this.name=name么

作者: 黑马王振宇    时间: 2013-1-8 15:06
本帖最后由 黑马王振宇 于 2013-1-8 15:08 编辑

那么理解也可以,你这里的问题就是:父类中定义完的方法子类不用重新定义,直接拿过来用就可以了。
带参数的就调用相应的父类中的构造方法。
首先你student中接收进来一个参数name,super()中带参数,那么他调用的就是父类中带参数的构造函数Person(String name)。
作者: 陈丽莉    时间: 2013-1-8 15:08
super(name)代表的是子类调用了父类Person中的字符串为参数的构造函数,即
Person(String name)
{
   this.name=name;
}
这个方法,并将子类Student接收到的name作为传参。
作者: 徐帅    时间: 2013-1-8 15:14
本帖最后由 徐帅 于 2013-1-8 15:22 编辑

你这里是访问父类的构造函数,即Person类的构造函数:Person(String name){this.name = name}
另外对于继承中的构造函数:
1、在对子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的构造函数默认第一行有一条隐式的语句 super();
2、super()会访问父类中空参数的构造函数,而且子类中所有的构造函数默认第一行都是super(),同样是因为初始化要先执行。
3、当父类中没有空参数的构造函数,就必须用super来指定。
4、构造函数的调用是super(),一般函数用super.(),比如调用父类的show方法,调用的方式为super.show()
注意:super语句一定定义在子类构造函数的第一行,(和this道理一样,先按照父类的方式进行初始化,再通过自己的方式初始化),子类必须要访问父类。

希望对楼主有帮助




作者: 丁强强    时间: 2013-1-16 12:04
我的理解是 this 是本类,super是父类




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