1.this
是用于区分局部变量和成员变量同名的情况。
this:代表本类的对象,到底代表哪一个对象呢?代表this所在函数所属对象的引用。简单说:哪个对象在调用this所在的函数,this就代表哪个对象。
this的应用:
当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。
在构造函数间调用
this语句,不能用于普通函数中,只能用于构造函数之间互相调用。
this语句只能定义在构造函数的第一行,因为初始化要先执行。意思是构造方法中this(age)要放在第一行,this.age放在第一行会导致 this(age)不能初始化。
例如person p = new person("lisi",30)
person的构造函数
[java] view plaincopyprint?person(String name,int age)//初始化name,age
{
this(name);//初始化name,这时候会调用本对象的person(String name)构造方法
this.age=age;//
}
person(String name)
{
this.name=name;
}
person(int age)
{
person(String name,int age)//初始化name,age
{
this(name);//初始化name,这时候会调用本对象的person(String name)构造方法
this.age=age;//
}
person(String name)
{
this.name=name;
}
person(int age)
{[java] view plaincopyprint?this.int=int;
}<SPAN> </SPAN>
this.int=int;
} 2.super
对于super,《The Java Programming Language》上这样说:In field access and method invocation, super acts as a reference to the current object as an instance of its superclass.可以理解为在需要访问the hidden field和进行父类方法调用的时候,super表现为指向作为父类的一个实例的当前对象的一个引用
java是解释性的语言,因此this和super不应该是地址。理解为引用可能更自然些
this 表示当前类的对象,super 表示对父类的某个构造器的调用
this是一个对象的引用,而super仅仅是一个指示编译器调用超类方法的特有的关键字,这里一定要记住!super不是一个引用,只是一个关键字!很多人犯的错误。
super只是编译时期的关键字。super是编译才有用的,是用来指导编译器的。
你可以:
Object ojb = this;
但无法:
Object ojb = super;
|