JAVA実紀1-thisキーワード

4484 ワード

0-初ブログ
仕事中にこのキーワードが途切れずに使われるので、ほとんど毎回資料を調べて、ここでこのキーワードのよくある使い方を整理します.
1、概要
  • は、「呼び出しメソッドのそのオブジェクト」への参照を表す.
  • どのオブジェクトがthisが存在する関数を呼び出しているか、thisはどのオブジェクトを表しているか.
  • は、呼び出された関数のパラメータまたはオブジェクトの参照を表す.

  • 2、機能
     thisキーワードはメソッド内部の javaでのみ使用できます.thisキーワードの基本的な使い方は、*呼び出された関数を表すメンバー変数(パラメータを区別するために使用される)*このクラスの他のメソッドを呼び出すときに使用します.*コンストラクション関数間で相互呼び出しが行われます.
    2.1、呼び出された関数を表すメンバー変数(パラメータを区別するために使用)
    2.1.1、例
    class Person() {
        private String name;
        public void setName (String name) {
            this.name = name;
        }
    }

     上記の例のnameは、パラメータであり、メンバーパラメータであり、付与時に書く場合
    name = name;

    を選択すると、Javaコンパイラは割り当てられた値の両方を判断できません.メンバー変数にthisを付けると、この2つのパラメータを区別できます.ここではsetNameを呼び出すときのpersonオブジェクトを示します.
    2.2、本類の他の方法を呼び出す時に使用する
    2.2.1、例
    //                     (       。。。)
    public class Fighting4License {
        public static void main (String[] args) {
            new Person().promote(new Driver());
        }
    }
    
    class Person {
        public void promote (Driver driver) {
            Driver examed = driver.getExamed();
            System.out.println("Finally, become a DRIVER!");
        }
    }
    
    class School {
        static Driver getPass(Driver driver) {
            return driver;
        }
    }
    
    class Driver {
        Driver getExamed () {
            return School.getPass(this);
        }
    }

     類Driver中
        return School.getPass(this);

    thisキーを使用すると、driverオブジェクト、すなわちパラメータとして渡されます.
    2.3、本類の他の方法を呼び出す時に使用する
    2.3.1、例
    class Person {
        Person() {
            System.out.println("come on!!");
        }
        Person(String name) {
            this();
        }
        Person(String name, int age) {
            this(name);
            // this();                  ,        
        }
    }

     thisでコンストラクタを呼び出すことができますが、2つを呼び出すことはできません. コンストラクタ呼び出しを最初に実行する必要があります.そうしないと、コンパイラがエラーを報告します. コンパイラは、コンストラクタ以外のメソッドでthisコンストラクタを呼び出すことを禁止します.
    3、注意
  • Javaのデフォルトでは、すべてのメンバー変数とメンバーメソッドがthisに関連付けられているため、thisを使用するのは余計な場合があります.このキーワードは、現在のオブジェクトの参照を明確に示す必要がある場合にのみ使用します.例:
  •     class Person() {
            void sock();
            void kiss() {
                sock();
                //this.sock();     ,        。
            }
        }
  • メソッドは、thisキーワードを使用して、同じオブジェクトに対して1つの文で複数回操作を実行できます.
  •     //     ( )  
        public class Person {
            int jump = 0;
            Person repeat() {
                jump++;
                return this;
            }
            void print() {
                System.out.println("jump = " + jump);
            }
            public static void main (String[] args) {
                Person jack = new Person();
                jack.repeat().repeat().repeat().repeat().print();
            }
        }
  • staticメソッドはthisのメソッドがなく、すなわちstaticメソッドの内部にthisキーワードが存在しない.