1.使用this调用成员变量
1.1 this可以省略的情况
面向对象中成员属性和成员函数都需要用对象进行调用,即对象.变量和对象.成员函数的方式。
class Person{
String name;
void talk(){
System.out.println("my name :"+ name);
// name == this.name
}
}
class Test{
public static void main(String[] args){
Person p1 = new Person();
p1.talk();
}
}
注意:此处输出函数中使用name而没有使用对象.变量;其实真是情况应该使用this.name
this实际为一个对象,代表了调用这个函数对应的那个对象 ,比如p1.talk(),p1调用talk,this代表p1
1.2 this不能省略的情况
当成员函数中的局部变量(参数)和成员变量相同时,this可以调用成员变量或者成员函数,如果不用this那么会默认调用局部变量。
class Person{
String name;
void talk(String name){
System.out.println("my name :"+ name);
// 此处name为成员函数传件来的值
System.out.println("my name :"+ this.name);
// 此处name为成员变量的name
}
}
2. this调用构造函数
注意:this就是用来调用成员变量和成员函数的
2.1 利用this给构造函数赋值
Person(String name, int age,String address){
this.name = name;//name为函数参数,this.name为成员变量
this.age = age;
this.address = address;
}
2.2利用this 调用本类中其他的构造函数
class Person{
Person() {
System.out.println("hello");
}
Person(String name, int age){
this.name = name;
this.age = age;
}
Person(String name, int age,String address){
this(name,age);
this.address = address;
}
注意:用this调用本类构造函数,必须放在当前构造函数的第一个语句;而且,this调用只能一个
2.3如何调用多this
Person(String name, int age,String address){
this(); // 两个this不可以,因为,this语句必须放在构造函数的第一句
this(name,age);
this.address = address;
}
应该讲this()放在 this(name,age);对应的成员函数中