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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 河边捉虾米 中级黑马   /  2016-9-11 18:32  /  571 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  在子类继承父类时候,子类构造器是
  public Student(String name){
  super(name);
  }
父类构造器是
public Person(String name){
  }
  在测试类中
  Student s=new Student("小米");

请问super(name)中,是把小米这个字符串传递给name了,还是把"小米"所在堆中地址传给name了??
  请大家谈谈自己的理解?一起交流

6 个回复

倒序浏览
这个不清楚
回复 使用道具 举报

感谢回复,在黑马一起加油
回复 使用道具 举报
Student s=new Student("小米");这句执行后,给形参赋值 name = "小米";因为"小米"是字符串常量,所以把常量池中的"小米"对象地址赋值给了name,并没有在堆中创建字符串。要想在堆中创建字符串需要用String类的构造方法。String str = new String("小米");这条语句创建了两个字符串,堆内存中一个,常量池中一个。str变量指向的是堆内存中的。
回复 使用道具 举报
new对象后,先访问父类有参构造,将小米这个值先传给父类name,再访问子类有参构造,将name传给子类有参.
回复 使用道具 举报

你的真诚打动了我
回复 使用道具 举报
hfutWL 发表于 2016-9-11 19:27
Student s=new Student("小米");这句执行后,给形参赋值 name = "小米";因为"小米"是字符串常量,所以把 ...

醍醐灌顶了,说的真好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马