当成员变量和和局部变量重名,可以用关键字this区分。
this:this就是所在函数所属对象的引用。哪个对象调用了this所在的函数,this就代表哪个对象。
package com.monfolld;
class Person1{
private String name;
private int age;
Person1(){
name="baby";
age=1;
System.out.println("Person run");
}
Person1(String name){
this.name=name;
}
Person1(String name,int age){
this.name=name;
this.age=age;
}
public void speak(){
System.out.println(this.name+":"+this.age);
}
}
class ConsDemo {
public static void main(String[] args){
Person1 p=new Person1();
p.speak();
Person1 p1=new Person1("小明");
p1.speak();
Person1 p2=new Person1("小黑",10);
p2.speak();
}
}
this还可以调用构造函数,但必须放在第一行,注意不要不适当的调用构造函数造成死循环,this() 不能使用在普通方法中 只能写在构造方法中
package com.monfolld;
class Person1{
private String name;
private int age;
Person1(){
name="baby";
age=1;
System.out.println("Person run");
}
Person1(String name){
this.name=name;
}
Person1(String name,int age){
this(name); //这里的this调用第一个构造函数
this.age=age;
}
public void speak(){
System.out.println(this.name+":"+this.age);
}
}
class ConsDemo {
public static void main(String[] args){
Person1 p=new Person1();
p.speak();
Person1 p1=new Person1("小明");
p1.speak();
Person1 p2=new Person1("小黑",10);
p2.speak();
}
}