return this的用法

本文介绍了Java中通过返回当前类实例实现链式调用的方法,并提供了具体的代码示例。

 每次返回类实例,用return this;

 

  1. class Test2 {
  2. String s="";
  3. public static void main(String[] args) {
  4.    Test2 t = new Test2();
  5.    t.method("111");
  6.    t.method("222");
  7.    t.method("333");
  8.    t.method2();
  9. }
  10. public Test2 method(String sb) {
  11.    s+=sb;
  12.    return this;
  13. }
  14. public void method2() {
  15.   
  16.    System.out.println(s);
  17. }
  18. }

 结果: 111222333

 

  1. class Test 
  2. public static void main(String[] args) 
  3. Test t = new Test().method();//返回当前这个类的实例给t 
  4. t.method2(); 
  5. public Test method() 
  6. return this
  7. public void method2() 
  8. System.out.println( "Hello Beijing 2008! "); 

return this就是返回当前这个类的一个实例 this 就是代表当前这个类的一个实例.


 原文参考:

http://hi.baidu.com/rague/blog/item/5a44a882a0d1afa70cf4d2b9.html

 

this”在不同的编程语言中有不同的用法,以下是一些常见编程语言中“this”的用法: ### Java 中“this”的用法 - **引用当前对象**:“this”的类型就是所在类的名字,“this”相当于当前对象。例如在一个`Person`类中,有一个`set`方法,代码如下: ```java public class Person { String name; int age; public void set(String name1, int age1) { this.name = name1; this.age = age1; } } ``` 这里的`this`就代表当前调用`set`方法的`Person`对象 [^1]。 - **返回类的引用**:“this”关键字除了可以引用变量或者成员方法之外,还可以返回类的引用。可以使用`return this`来返回某个类的引用,此时“this”关键字就代表类的名称。例如在一个`Student`类中: ```java public class Student { public Student getStudent() { return this; } } ``` 这里的`return this`代表返回`Student`类的引用 [^3]。 - **在构造方法中调用其他构造方法**:在一个构造方法中,用“this(参数)”的形式调用构造方法,“this(参数)”必须写在主调方法的第一行,且不能出现相互循环调用。例如: ```java public class Person { String name; int age; double height; public Person(String name, int age, double height) { this(name, age); this.height = height; } public Person(String name, int age) { this.name = name; this.age = age; } } ``` 在上述代码中,第一个构造方法通过`this(name, age)`调用了第二个构造方法 [^5]。 ### JavaScript 中“this”的用法 - **全局作用域中**:在全局作用域中,“this”代表全局对象。例如: ```javascript var x = 1; function test() { console.log(this.x); } test(); // 1 ``` 这里的`this`代表全局对象,所以`this.x`就是全局变量`x`,输出结果为 1 [^2]。 - **作为对象方法的调用**:当“this”在对象的方法中使用时,“this”代表调用该方法的对象。例如: ```javascript var obj = { x: 2, test: function() { console.log(this.x); } }; obj.test(); // 2 ``` 在上述代码中,`test`方法中的`this`代表`obj`对象,所以`this.x`就是`obj.x`,输出结果为 2。 ### C++ 中“this”指针的用法 - **指向正在被操作的对象**:“this”指针是一个隐含于每一个成员函数中的特殊指针,它指向正在被该成员函数操作的那个对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋给“this”指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用“this”指针。例如: ```cpp #include <iostream> class X { public: int data; void setData(int value) { this->data = value; } }; int main() { X obj; obj.setData(10); std::cout << obj.data << std::endl; return 0; } ``` 在上述代码中,`setData`方法中的`this`指针指向`obj`对象,通过`this->data`来访问`obj`对象的数据成员`data` [^4]。 - **实现对象的链式引用**:在某些场景下,为实现对象的链式引用,需要显式引用“this”指针。例如: ```cpp #include <iostream> class X { public: int data; X& setData(int value) { this->data = value; return *this; } X& printData() { std::cout << this->data << std::endl; return *this; } }; int main() { X obj; obj.setData(10).printData(); return 0; } ``` 在上述代码中,`setData`和`printData`方法都返回`*this`,这样就可以实现对象的链式引用 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值