Think in Java读书笔记 - this 关键字

 1 class Banana {
 2     void peel(int i){ /* statement */ }
 3 } 
 4     public Class BananaPeel {
 5         public static void main(String [] args){
 6             Banana a = new Banana(),
 7                    b = new Banana();
 8             a.peel(1);
 9             b.peel(2);
10 }}  

同一类型的两个对象 a , b  都调用着统一方法 peel()

如何知道它是被谁调用编辑器做了内幕工作-将对象作为第一参数传递给peel。

Banana.pell(a,1)

Banana.pell(b,2)  并不能这么书写,只是帮我们理解实际所发生的事情。

假设要在方法内部获得当前对象的引用,this 就是表示“调用方法的那个对象” 的引用。

public class Leaf{
    int i = 0;
    Leaf  test(){
        i++;
        return this;
    }

    void print(){
        System.out.print("i = " + i)
    }
    public static void main(String[] args){
        Leaf x = new Leaf();
        x.test().test().test().print()
    }
} 
/*output:
i = 3
*///:~

test方法返回了对当前对象的引用,所以很容易在一条语句中对同一对象执行多次操作。

 

class person {
    public void eat(Apple apple){
        Apple peeled = apple.getPeeled();
        System.out.println("lol");
}}

class Peeler{
    static Apple peel(Apple apple){
        return apple
}}

class Apple{
    Apple getPeeled(){
        return Peeler.peel(this)}}

public class PassingThis{
    public static void main(String[] args){
        new person().eat(new Apple());
}}/*output:
lol
*///:~
this 关键字当前对象传递给其他方法

 

 


更多参考:
http://www.cnblogs.com/hasse/p/5023392.html

转载于:https://www.cnblogs.com/a11en/p/7765476.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值