JAVA程序设计--对象和类(九)

this引用

关键字this引用对象自身

可以在构造方法内部调用同一个类的其他构造方法;

使用this也可以引用隐藏数据域。

如:

public class Circle{

private double radius;

public Circle(double radius){//有参构造方法

this.radius = radius;//显示使用this来引用被创建对象的数据域radius.

}

public Circle(){//无参构造方法

this(1.0); //使用this调用另一个有参构造方法,参数类型是double型的。
//使用方法是this(参数列表);在构造方法中,this(参数列表)语句要写在其他语句出现之前。
}

public double getArea(){

return this.radius*this.radius*Math.PI;//每个实例变量都属于一个this表示的实例,通常在不引起歧义的情况下,这个this是被忽略的。

}

}




在数据域的set方法里,经常将数据域名用作参数名。在这种情况下,这个数据域在set方法中被隐藏。为了给它设置新值,需要在方法中引用隐藏的数据域名。

隐藏的静态变量可以简单通过“类名.静态变量”引用(结果是这个类的所有对象共享这个参数的值)
隐藏的实例变量需要使用this来引用(结果是参数的调用对象的数据域)

public class F{
private int i = 5;
private static double k = 0;
public void setI(int i){
this.i = i;// //指向调用setI方法的那个对象,把传入的int型的参数i的值赋给那个对象的数据域i。
}
public static void setK(double k){
F.k = k;////将double类型的参数k的值赋值给这个类的静态数据域k,属性k是被类的所有对象所共享的。
}

}



总结:

this不能用在static方法中!

所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!


什么情况下需要用到this:

第一、通过this调用另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用

第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错。

第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。


其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的。

猜你喜欢

转载自blog.csdn.net/qq_35827280/article/details/80322511