使用this呼叫本類中的屬性
現在觀察以下**,看會有那些問題:
public void setname(string name)
這裡面的兩個name都是setname方法中的name引數。
此時,特別希望可以通過乙個指定的標識明確的表示要把傳入的name引數的值給類中的屬性,所以此時就需要使用this關鍵字,使用this.name就表示類中的屬性。
class person
public void setname(string name)
public void setage(int age)
public string getname()
public int getage()
public void print()
};public class demo35
}; 使用this還可以從乙個構造方法中呼叫其他構造方法。
例如:有以下乙個要求,乙個類中存在了三個構造方法,但是要求, 不管怎麼呼叫,最終都要求可以在物件例項化的時候列印乙個「新的物件產生了」的提示。
class person
public person(string name)
public person(string name,int age)
public void setname(string name)
public void setage(int age)
public string getname()
public int getage()
public void print()
}; 以上**雖然可以實現功能,但是同樣的**出現了三次,而且後面的兩次出現純屬多餘吧。用this()的形式可以呼叫類中的無參構造方法。
class person
public person(string name)
public person(string name,int age)
public void setname(string name)
public void setage(int age)
public string getname()
public int getage()
public void print()
};public class demo36
}; 注意點1:
如果使用了this呼叫其他構造方法,則此語句,必須寫在構造方法的首行。
public void fun()
public person(string name,int age)
注意點2:
使用this可以呼叫本類中的其他構造方法,但是至少留乙個構造方法,作為程式的出口。
public person()
public person(string name)
public person(string name,int age)
this最重要的特性 —— 表示當前物件
當前物件在程式中用以下形式體現:
· 當前操作此方法的物件,就稱為當前物件。
class demo
};public class demo38
}; 回顧:
之前講解的兩個物件比較的程式。
// 在類的內部增加乙個比較的方法
public boolean compare(person p)else
} 分析程式的執行過程:
class a
public void hello()
};class b
public void fun()
};public class oodemo40
};
java中this關鍵字
1 this 關鍵字 疑問 建立的p 物件為什麼沒有值。解答 name 與age 在指定的建構函式裡面已經存在,當name name 這個語句執行的時候,如果jvm 在該方法內能尋找到該變數,則不會去尋找成員變數,那麼要想指定給成員變數或物件的屬性進行初始化賦值,那麼必須指定name 是成員屬性。1...
Java中的關鍵字
abstract 抽象的 continue 繼續 for 當 的時候 new 新建 switch 轉換 assert 斷言 default 預設 if 如果 package 打包 synchronized 同步 boolean 布林 do 做 goto 跳轉到 private 私有的 this 這個...
java中的this關鍵字
1.this是指當前物件自己。當在乙個類中要明確指出使用物件自己的的變數或函式時就應該加上this引用。如下面這個例子中 public class hello public static void main string args 執行結果 s helloworld 1 this.s hello 2...