黑马程序员技术交流社区

标题: 疑问 [打印本页]

作者: Hugoo    时间: 2014-7-1 08:46
标题: 疑问
大神们 能不能帮忙看一下一个问题:
还是关于"this"的

public class Date
{       
private int month;       
private int day;       
private int year;       

public Date( int theMonth, int theDay, int theYear )       
{
month = checkMonth( theMonth );       
year = theYear;       
day = checkDay( theDay );
System.out.printf( "Date object constructor for date %s\n", this );       
}       

public String toString()
{
return String.format( "%d/%d/%d", month, day, year );       
}
}

这是一个不完整的程序,我对这部分不是很懂,中间我省略了checkDay() checkMonth()
我也省略了另外一个class里面main()
我就是想知道
1.为什么this知道是指向toString()那个方法的
2.我尝试改变 "toString"这个名字 程序就出错了,难道这个不是一个可以任意定义的方法名字吗?
3.我如果给这个程序里面再加一个类似toString的方法,也是返回String,我尝试了
public String apple()
{
return ......
}
结果this 还是指向的是toString 他怎么知道的?
4.我加入什么方法会改变this 的指向 谢谢!!!!

作者: Hugoo    时间: 2014-7-1 08:47
1,this本来指的是当前对象,但是当你打印(或者与其他字符串相连)的时候,会自动调用this所指向对象的toString方法。
2,改名字不会出错啊。(详细说说你怎么改的)
3,再次说 this不是指向的toString方法,而是你正在调用的那个对象。你看到的效果是因为你打印this的时候,jdk自动默认调用了toString方法。
4,this在语义上已经规定:就是指的是当前被你调用的对象。不可改变。




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