神经塔 发表于 2007-1-7 01:30
public String toString()
class stu<BR>{<BR> int age;<BR> stu(int age)<BR> {<BR> this.age = age;<BR> }<BR> public String toString()<BR> {<BR> System.out.println("diaoyong");<BR> return age+"";<BR> }<BR>}<BR>class str<BR>{<BR> public static void main(String []args)<BR> {<BR> stu s = new stu(15);<BR> System.out.println(s);//这个时候为什么去调用了我们重写的toString方法<BR> System.out.println(s.age);这个时候应该也去调用啊?为什么没有去调用,我感觉它在这个地方是隐式 的 去 调 用了tostring()方法<BR> }<BR>}
liupei1012 发表于 2007-1-7 08:10
能调用呀。在子类中父类的方法若被重写那么就调用重写的方法
千里冰封 发表于 2007-1-7 09:00
楼主的程序没有什么问题啊<BR><BR>当你打印出对象的时候,它默认就去调用对象的toString方法,这是JAVA里面的规定<BR><BR>第二个,s.age表示是调用对象s里面的成员变量age,这个时候怎么会去调用toString呢?
神经塔 发表于 2007-1-7 10:46
<P>哈哈,恍然大悟!冰封还有别的情况可以掉用我们自己重写的toString吗?</P>
千里冰封 发表于 2007-1-7 10:55
用+相加的时候,反正就是用到字符串时候,它会自动调用toString把你的对象转为字符串,然后再做别的事情
神经塔 发表于 2007-1-7 11:07
<P>冰封,我还是有点不太明白,我知道是对象的时候调用我们重写的toString()方法,那你说+的时候,用到字符串时候就调用,可否在我的小例子上改一下,麻烦你了!</P>
千里冰封 发表于 2007-1-7 11:21
class stu<BR>{<BR> int age;<BR> stu(int age)<BR> {<BR> this.age = age;<BR> }<BR> public String toString()<BR> {<BR> System.out.println("diaoyong");<BR> return age+"";<BR> }<BR>}<BR>class str<BR>{<BR> public static void main(String []args)<BR> {<BR> stu s = new stu(15);<BR> System.out.println("abcd"+s);//这个时候为什么去调用了我们重写的toString方法<BR> System.out.println(s.age);这个时候应该也去调用啊?为什么没有去调用,我感觉它在这个地方是隐式 的 去 调 用了tostring()方法<BR> }<BR>}
神经塔 发表于 2007-1-7 11:31
<P>十分感谢!!</P>
无理取闹 发表于 2007-1-7 11:53
神经塔学的怎么样了[em01]
神经塔 发表于 2007-1-7 12:10
<P>哈哈,后天开始学jsp了!真是高兴!我看你都学完了strus了!牛!加你的qq,我的qq是494909176</P>
无理取闹 发表于 2007-1-7 12:21
加你了 yoyoyoyoyo那个
jialong 发表于 2008-4-11 17:46
使用s就是调用toString方法吗?
sunkaidong 发表于 2008-4-11 17:59
不是..是说当你要打印对象的时候对象会调用tostring()函数..一般用来打印对象信息
he20041987 发表于 2008-4-11 20:20
这里不是输出了三次吗? 看不懂中间的15是怎么来的
[[it] 本帖最后由 he20041987 于 2008-4-11 20:27 编辑 [/it]]
sunkaidong 发表于 2008-4-11 20:38
第一次是调用tostring()方法是调用的..第二次是返回值打印..第三次是后一个打印函数的内容
页:
[1]