java中this.的使用
现实中,哪都有重名,java这么神奇,咋可能没有呢?但是,好家伙,重名了咋整,本小朋友表示我心中很多问号??????还好还好,最近我发现个宝贝:“this.”,接下来我就简单介绍下this.
直接看例子叭:(注意,第一个是错例,即未用this.的)
public class delete {
private int age;
private String name;
public void setAge(int age,String name){
age=age;
name=name;
}
public int getAge(){
System.out.println(age+name);
return age;
}
}
public class using {
public static void main(String[] args) {
delete hero=new delete();
hero.setAge(10,"JACK");
hero.getAge();
}
}
我们使它运行时,会发现:结果是0null。哦?我们不是赋值了吗?这啥嘛,咋还啥都没。没错,那是同名的锅,但是它可以把这锅甩掉,那就是用this. 好的,看下例子(理论上是对的,嘿嘿)
public class delete {
private int age;
private String name;
public void setAge(int age,String name){
this.age=age;
this.name=name;
}
public int getAge(){
System.out.println(age+name);
return age;
}
}
public class using {
public static void main(String[] args) {
delete hero=new delete();
hero.setAge(10,"JACK");
hero.getAge();
}
}
输出会发现,问题完美解决。这就完美解决了形参名和属性名重名的问题,this.后的表示此类中的属性,未加的就是形参了。
另外,this也可以修饰方法,构造器。但this就表示的是当前对象了。在类的构造器中,我们可以使用”this.属性“或者“this.方法”方式调用当前的属性和方法。但是,通常情况下,我们都会选择省略this,但是若构造器的形参名和类的属性名相同时,我们必须显式的使用 this.变量 的方式,表明此变量是属性,而不是形参。
还有一点就是:一个构造器中可以调用另一个构造器
只需要将this( )放在那个构造器中的第一行就可以了。如下例:
public class delete {
private int age;
private String name;
public delete(){
System.out.println("i am a monkey");
}
public delete(int age,String name){
this(); //就调用了上一个构造器
this.age=age;
this.name=name;
}
public int getAge(){
System.out.println(age+name);
return age;
}
}
public class using {
public static void main(String[] args) {
delete hero=new delete(10,"liupi");
hero.getAge();
}
}
构造器的调用需要注意:
1.在类的构造器中,可以显式的使用this(形参)的方式调用本类中的其他构造器。
2.构造器中不可以用this()调用自己。
3.如果有n个构造器,则最多有n-1个构造器可以使用this(形参)调用
4.this(形参)必须放构造器的首行。
5.故不可以连续的调用多个构造器。
最后,我想说的是:this表示的是当前的对象或者当前正在创建的对象。而构造器的调用也只是借用了其他的逻辑,而未改变该构造器。