面向对象之关键字 this
在java 中this可以完成三件事:表示本类属性,表示本类方法,表示当前对象
1、通过this关键字可以明确的去访问一个程用变量
class Hero { //新建一个Hero类
int age; // 类的属性为age
public Hero(int age) {
this.age = age; //用this.属性表示本类属性。
}
public int getAge() {
return this.age;
}
}
可以理解为: 对象名.属性 即 Hero.age ,只不过这里的对象在未创建之前是未知的,内部为空,没有地址,这里用this来表示一个未知对象,当创建新的对象时,this变会获取对象的地址。
2、通过this调用本类构造方法
class Hero { //新建一个Hero类
int age;
String name; //新增一个属性 ,名字
public Hero(int age) {
this.age = age; //用this.属性表示本类属性。
}
public Hero( String name; int age){
this(age); //this()调用本类方法,调用一个参数为age的本类构造方法
this.name = name;
}
public int getAge() {
return this.age;
}
可以理解为: 对象名() 即 Hero(age) ,和我们在实例化对象是 Hero hero = new Hero(age)类同;这里只是将Hero替换为this了
注意 :所有的构造方法都是在对象被实例化的时候调用的,所以this调用构造的方法的优先级更高,应该放在代码的第一行。
3、通过 this 关键字调用成员方法。
class Hero { //新建一个Hero类
int age; // 类的属性为age
public Hero(){} //无参构造
public Hero(int age) {
this.age = age; //用this.属性表示本类属性。
}
public int getAge() {
return this.age;
}
/** 定义一个说话的成员方法*/
public void print() {
System.out.println("英雄的年龄是:" + this.age);
}
public void speak(){
this.print();//通过this调用print()方法
}
publiv void address(){
System.out.println(this);//打印this指向的地址
}
}
接下来我们通过打印 this 和 Hero 在虚拟机中的地址(理解为地址)将进行理解
public class Test {
public static void main(Strig[] args) {
Hero hero = new Hero();
System.out.println(hero);//打印hero的指向
hero.address();
}
}
打印出来的地址结果应该是相当的
Hero.Hero@279f2327
Hero.Hero@279f2327
注意这里的地址并不是真正的地址,不过可以理解为地址。
每台计算机打印出来的值会不同,但this和hero应该是一样的