Java麵向對象基礎--this關鍵字的解析
this關鍵字的作用:
1、表示類中的屬性。
class Person{ // 定義Person類
private String name ; // 姓名
private int age ; // 年齡
public Person(String name,int age){ // 通過構造方法賦值
this.name = name ; // 為類中的name屬性賦值
this.age = age ;// 為類中的age屬性賦值
}
public String getInfo(){ // 取得信息的方法
return "姓名:" + name + ",年齡:" + age ;
}
};
public class ThisDemo02{
public static void main(String args[]){
Person per1 = new Person("張三",33) ; // 調用構造實例化對象
System.out.println(per1.getInfo()) ; // 取得信息
}
};
2、使用this調用本類的構造方法。
構造方法間可以互相調用,使用this(參數)的形式完成。
注意:在使用this關鍵字調用其他構造方法時,this()調用構造方法的語句隻能放在構造方法的首行。
在使用this調用本類中的其他構造方法是,至少有一個構造方法是不用this調用的,以防止遞歸調用的情況出現。
class Person{ // 定義Person類
private String name ; // 姓名
private int age ; // 年齡
public Person(){ // 無參構造
System.out.println("新對象實例化") ;
}
public Person(String name){
this() ;// 調用本類中的無參構造方法
this.name = name ;
}
public Person(String name,int age){ // 通過構造方法賦值
this(name) ;// 調用有一個參數的構造方法
this.age = age ;// 為類中的age屬性賦值
}
public String getInfo(){ // 取得信息的方法
return "姓名:" + name + ",年齡:" + age ;
}
};
public class ThisDemo05{
public static void main(String args[]){
Person per1 = new Person("張三",33) ; // 調用構造實例化對象
System.out.println(per1.getInfo()) ; // 取得信息
}
};
3、表示當前對象。
使用this和引用傳遞比較兩個對象是否相等。
String本身是一個類,進行相等的比較,則要判斷內容,使用equals()方法來完成。
age是int類型,使用 == 即可。
地址相等,則兩個對象相等。地址如果不相等,一次判斷屬性內容是否相等。
class Person{ // 定義Person類
private String name ; // 姓名
private int age ; // 年齡
public Person(String name,int age){
this.setName(name) ;
this.setAge(age) ;
}
public boolean compare(Person per){
// 調用此方法時裏麵存在兩個對象:當前對象、傳入的對象
Person p1 = this ; // 當前的對象,就表示per1
Person p2 = per ; // 傳遞進來的對象,就表示per2
if(p1==p2){ // 判斷是不是同一個對象,用地址比較
return true ;
}
// 之後分別判斷每一個屬性是否相等
if(p1.name.equals(p2.name)&&p1.age==p2.age){
return true ; // 兩個對象相等
}else{
return false ; // 兩個對象不相等
}
}
public void setName(String name){ // 設置姓名
this.name = name ;
}
public void setAge(int age){ // 設置年齡
this.age = age ;
}
public String getName(){
return this.name ;
}
public int getAge(){
return this.age ;
}
};
public class ThisDemo08{
public static void main(String args[]){
Person per1 = new Person("張三",30) ; // 聲明兩個對象,內容完全相等
Person per2 = new Person("張三",30) ; // 聲明兩個對象,內容完全相等
// 直接在主方法中依次取得各個屬性進行比較
if(per1.compare(per2)){
System.out.println("兩個對象相等!") ;
}else{
System.out.println("兩個對象不相等!") ;
}
}
};
最後更新:2017-04-03 15:21:43