目录
一、引入this关键字
在构造器内完成对象属性的初始化
public class This01{
//编写一个main方法
public static void main(String[] args){
Dog d1 = new Dog("大壮", 3);
d1.info();
}
}
class Dog{//类
String name;
int age;
public Dog(String dName, int dAge){//构造器
name = dName;
age = dAge;
}
public void info(){//成员方法,输出属性信息
System.out.println(name + "\t" + age + "\t");
}
}
运行结果
如果构造器的形参能够直接写成属性名
即String name, int age
public class This01{
//编写一个main方法
public static void main(String[] args){
Dog d1 = new Dog("大壮", 3);
d1.info();
}
}
class Dog{//类
String name;
int age;
public Dog(String name, int age){//构造器
name = name;//null
age = age;//0
}
public void info(){//成员方法,输出属性信息
System.out.println(name + "\t" + age + "\t");
}
}
编译结果
原因分析:变量的作用域原则
构造器里的name和age变成了局部变量(其作用域只存在于这个构造器内),而不是属性
但是方法info()里的输出的name和age还是指的属性的name和age,所以还是输出null和0
解决这个问题:this关键字
二、this入门
this代表当前对象
eg:小明说:我的眼睛;小红说:我的眼睛;两人都说了“我的”,但是指向的是不同的眼睛
每个对象都有一个this,但是指向的是不同的对象
public class This01{
//编写一个main方法
public static void main(String[] args){
Dog d1 = new Dog("大壮", 3);
d1.info();
}
}
class Dog{//类
String name;
int age;
public Dog(String name, int age){//构造器
this.name = name;
this.age = age;
}
public void info(){//成员方法,输出属性信息
System.out.println(name + "\t" + age + "\t");
}
}
结果