1、this引用句柄
this指的就是调用该方法的对象
class A { String name; public A(String x) { name=x; } public void func1() { System.out.println("my name is "+name); } public void func2() { A a2=new A("a2"); a2.func1(); this.func1();//可以去掉this,结果一致 func1(); } public static void main(String [] args) { A a1=new A("a1"); a1.func2(); } } /* F:\java_example>java A my name is a2 my name is a1 my name is a1 */
在成员方法中,对访问同类中成员前加不加this引用,效果都一样,这就好像,我们是同一个公司的成员,,彼此在提及和自己公司相关的事时,不用说出公司名一样,当然也可以显式指出我们公司怎样怎样,每个成员方法内部都有一个this引用变量,指向调用这个方法的对象。
看似this可有可无,但在有些场合中还是非常有必要的
1)我们通过构造方法将外部传入的参数赋值给类成员变量,构造方法的形参名称与类的成员变量名相同
class Person
{
String name;
public Person(String name)
{
this.name=name;
}
}
2)可作为对象进行传class Containe{
class Container
{
Component comp;
public void addComponent()
{
comp = new Component(this);
/*comp = new Component(new Container());
此种做法是不合理的,因为我想要的是,把新创建的部件归到调用这个addComponent()的Container对象中。
如果我现在又新建一个Container类,那是会把这个部件归到新创建的Container类中,
为了只对应一个Container类,我们可以用this来表示我们的对象
*/
}
}
class Component
{
Container myCon;
public Component(Container con)
{
myCon=con;
}
}
3)构造方法是产生对象时被java系统自动调用的,我们不能在程序中像调用其它函数一样来调用构造方法。但是我们可以在一个构造方法中通过this的形式调用其它重载的构造方法
class Person { String name; int age; public Person(String name) { this.name=name; } public Person(String name,int age) { this(name); this.age=age; } }