本帖最后由 张绍成 于 2011-12-30 17:10 编辑
this为一系统资源,只允许用户读而不允许写,它存放当前对象的地址(引用)。
this变量有以下作用:
1. 构造方法重用:- public class Rectangle{
- public Rectangle(Location at, Shape size) {…}
- public Rectangle(Shape size,Location at){
- this(at, size); }
- public Rectangle(Location at) {
- this(at, new Shape(100,100));
- }
- public Rectangle(Shape size) {
- this(size, new Location(1,1));
- }
- public Rectangle() {
- this(new Location(1,1), new Shape(100,100));
- }
- }
复制代码 2、消除歧义:- Location{
- private int x;
- private int y;
- public Location(int x,int y) {
- this.x=x;
- this.y=y;
- }
- ……
- }
复制代码 3、返回对象-链式方法调用:- public class Count {
- private int i = 0;
- Count increment() {
- i++;
- return this; //返回对象的地址,所以我们可以链式访问它
- }
- void print() {
- System.out.println("i = " + i);
- }
- }
- public class CountTest{
- public static void main(String[] args) {
- Count x = new Count();
- x.increment().increment().print();
- }
- }
复制代码 4、作为参数传递"this”变量-进行回调:
假设有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接受一个代表其所在容器的参数。例如:- class Container
- {
- Component comp;
- public void addComponent()
- {
- comp = new Component(this); //代表你所创建的对象,因为它要用到.
- }
- }
- class Component
- {
- Container myContainer;
- public Component(Container c)
- {
- myContainer = c;
- }
- }
复制代码 |