A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张超超 黑马帝   /  2012-4-16 12:55  /  1618 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;
  }
  }

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
多谢分享~!
回复 使用道具 举报
挺好的呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马