美文网首页
Think in Java(二) this关键词

Think in Java(二) this关键词

作者: 如雨随行2020 | 来源:发表于2022-01-14 13:01 被阅读0次
  1. this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。
  2. 只要当需要明确指出对当前对象的引用时,才需要使用this关键字。例如,当需要返回对当前对象的引用时,就常常在return语句中这样写:
public class Leaf {
    int i = 0;
    Leaf increment() {
        i++;
        return this;
    }
    void print() {
        System.out.println("i = " + i);
    }
    public static void main(String[] args) {
        Leaf x= new Leaf();
        x.increment().increment().increment().print();
    }
}

由于increment()通过this关键字返回了当前对象的引用,所以很容易在一条语句里对同一个对象执行多次操作。
另外,this关键字对于将当前对象传递给其他方法也很有用

class Peeler {
    static Apple peel(Apple apple) {
        //... remove peel
        return apple;   //Peeled
    }
}
class Apple {
    Apple getPeeled() { return Peeler.peel(this); }
}
class Person {
    public void eat(Apple apple) {
        Apple peeled = apple.getPeeled();
        System.out.println("oishi");
    }
}
public class PassingThis {
    public static void main(String[] args) {
        new Person().eat(new Apple());
    }
}
  1. 在构造器中调用构造器

有时候想在一个构造器中调用另一个构造器,以避免重复代码。可用this做到

public class Flower {
    int petalCount = 0;
    String s = "initial value";
    Flower(int petal) {
        petalCount = petal;
        print("Constructor with int arg only, petalCount=" + petalCount);
    }
    Flower(String s) {
        print("Contructor with String arg only, s = " + s);
        this.s = s;
    }
    Flower(String s, int petal) {
        this(petal);
        this.s = s;
        print("String & int args");
    }
    Flower() {
        this("hi", 47);
        print("default constructor (no args)");
    }
    void printPetalCount() {
        print("petalCount = " + petalCount + " s = " + s);
    }
    public static void main(String[] args) {
        Flower x = new Flower();
        x.printPetalCount();
    }
    /* Output:
    Constructor with int arg only, petalCount = 47
    String & int args
    default constructor(no args)
    petalCount = 47 s = hi
    */

说明:1)用this可以调用一个构造器,但不能调用两个。
2)必须将构造器调用置于最起始处,否则编译器会报错
3)除构造器之外,编译器禁止在其他任何方法中调用构造器

相关文章

  • Think in Java(二) this关键词

    this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。 只要当需要明确指出对当前对象的引用时,才需...

  • Think In Java(番外)static关键词

    static含义书中86页引用: static方法就是没有this的方法。在static方法内部不能调用非静态方法...

  • Think in Java

    类描述了具有相同特性和行为的对象的集合。所以类实际上是一个数据类型。 public表示任何人都可以使用privat...

  • Think in Java

    一切皆对象 引用 每种编程语言都有操纵内存中元素的方式。例如C/C++之于指针、Java之于引用把对象看作电视机(...

  • OOP

    java in think 起因 自从买了Java in think 这本书,一直想认真仔细的品味下这本某种意义的...

  • 《think in java 4 》笔记系列二

    接口与抽象类 定义 抽象类为它衍生出去的所有类,都创建了通用的接口,它能为不同的子类型做出不同的表示。 包含了抽象...

  • 《Effective Java》—Java进阶必备

    《Effective Java》是 Java 领域的经典之作,其影响力不亚于《Think in Java》。它是每...

  • Think in Java(目录)

    最近打算读一读《Think in Java》(第四版中文) 先放上一段读者评论, 每个Java程序员都应该反复研读...

  • Think In Java 笔记

    Think in java 中的记录 return的作用一种是返回参数所用的关键字,假如一个有返回值的方法执行完了...

  • Think in Java(一)

    把对象想象为“服务提供者” 通常被隐藏的部分是对象内部脆弱的部分 组合和聚合组合:使用现有的类合成新的聚合:当组合...

网友评论

      本文标题:Think in Java(二) this关键词

      本文链接:https://www.haomeiwen.com/subject/dkyraltx.html