5.4.1 this 关键字

this 表示的是当前对象的引用 ,常见于 普通方法和构造方法中的使用

1.普通方法的使用

package com.caolh._5InitializationAcleanup;//: initialization/_5_7Leaf.java
// Simple use of the "this" keyword.

public class _5_7Leaf {
  int i = 0;
  _5_7Leaf increment() {
    i++;
    return this;  //返回的是当前对象的this 引用
  }
  void print() {
    System.out.println("i = " + i);
  }
  public static void main(String[] args) {
    _5_7Leaf x = new _5_7Leaf();
    x.increment().increment().increment().print();//链式调用,可以连续调用函数
  }
} /* Output:
i = 3
*///:~

2.构造函数的使用

     生成对象,就是要调用构造函数,构造函数 嵌套构造函数调用,一层一层向上找

    注意三点:1.构造函数嵌套调用 ,被嵌套的,必须在第一行

    2.被嵌套的构造函数不得调用1次以上

    3.普通方法不能调用构造函数

package com.caolh._5InitializationAcleanup;//: initialization/Flower.java
// Calling constructors with "this"

public class Flower {
  int petalCount = 0;
  String s = "initial value";
  Flower(int petals) {
    petalCount = petals;
    System.out.println("Constructor w/ int arg only, petalCount= "
      + petalCount);
  }
  Flower(String ss) {
    System.out.println("Constructor w/ String arg only, s = " + ss);
    s = ss;
  }
  Flower(String s, int petals) {
    //! System.out.println("String & int args");   //构造函数必须在第一行
    this(petals);
//!    this(s); // 构造函数不得调用1次以上
    this.s = s; // Another use of "this"
    System.out.println("String & int args");
  }
  Flower() {
    this("hi", 47);
    System.out.println("default constructor (no args)");
  }
  void printPetalCount() {
//! this(11); // 普通方法不得调用构造函数
    System.out.println("petalCount = " + petalCount + " s = "+ s);
  }
  public static void main(String[] args) {
    
    Flower x = new Flower();
    x.printPetalCount();
  }
} /* Output:
Constructor w/ int arg only, petalCount= 47
String & int args
default constructor (no args)
petalCount = 47 s = hi
*///:~

 

阅读更多
想对作者说点什么?
相关热词

博主推荐

换一批

没有更多推荐了,返回首页