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; } }
我要准备好行李启程了,谢谢关心我的家人和朋友,