1. 程式人生 > >Java中this關鍵字在構造方法中的使用

Java中this關鍵字在構造方法中的使用

1. Java中this關鍵字代表物件本身。用this關鍵字可以在類的內部呼叫屬性和方法,這樣程式碼的可讀性比較高,因為它明確的指出了這個屬性或方法的來源。

2. 同時在建構函式中也可以使用this關鍵字呼叫本類中的其它建構函式,但有幾點需要注意:

  • 建構函式呼叫其它建構函式,需要將this寫在建構函式的第一行。
  • 建構函式不可遞迴,防止死迴圈。

3. 一個類的建構函式分為無參和有參建構函式。通常做法是指定寫好一個包含所有欄位的建構函式,然後其它建構函式可以直接呼叫該函式,實現程式碼重用。

複製程式碼
package org.lyk.entities;

public class Emp implements
Comparable<Emp> { private long empno; private String ename; private String job; private float sal; public long getEmpno() { return empno; } public void setEmpno(long empno) { this.empno = empno; } public String getEname() {
return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public float getSal() { return sal; } public void
setSal(float sal) { this.sal = sal; } @Override public String toString() { return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", sal=" + sal + "]"; } public Emp() { this(-1, "無名氏", "未指定", 0); } public Emp(long empno) { this(empno,"無名氏","未指定",0); } public Emp(long empno, String name) { this(empno, name, "未指定", 0); } public Emp(long empno, String ename, String job, float sal) { super(); this.empno = empno; this.ename = ename; this.job = job; this.sal = sal; } @Override public int compareTo(Emp o) { if(this.sal < o.sal) return -1; else if(this.sal > o.sal) return 1; if(this.empno < o.empno) return -1; else if(this.empno > o.empno) return 1; return 0; } }
複製程式碼 複製程式碼
package org.lyk.main;

import org.lyk.entities.Emp;

public class Main
{ 
    public static void main(String[] args)
    {
        Emp[] emp = new Emp[4];
        
        emp[0] = new Emp();
        emp[1] = new Emp(9989);
        emp[2] = new Emp(9987,"Jerry");
        emp[3] = new Emp(7786,"Larry","programer",889);
        
        
        java.util.Arrays.sort(emp);
        for(Emp item : emp)
        {
            System.out.println(item);
        }
    }
}