先概述一下this的功能:
(1):this表示本類屬性
(2):this表示本類方法
(3):this表示當前物件
(1)下面來看一段**:
class person
public string getmessage()
}public class class2
}
若將這段**輸出,將會得到結果: null 0正確寫法:導致這個結果是為什麼呢?
原因在於這兩段**:
name = name;
age = age;
這兩段**並沒有達到我們想要的結果,這裡的age和name並不是我們類中定義的屬性,而是就近原則⭐而來的形參,所以相當於形參給形參賦值,而我們的屬性並沒有賦值;最後列印出來的就是初始值了。
this.name = name;
this.age = age;
有了this關鍵字,則this.name表示的是本類屬性name;
⭐規範:只要在類中方法訪問類中屬性,一定要加this關鍵字;⭐
(2)this呼叫構造方法
來看這樣定義的乙個類:
class person
//構造方法過載
public person(string name)
public person(string name, int age)
public string getmessage()
public void setname(string name)
public void setage(int age)
}
這個類當中有三個構造方法,使用了構造方法過載,但每個構造方法中都有一句
system.out.println("************************「);
這樣顯得很不規範,我們在程式設計時,同樣的**千萬不能重複出現⭐,否則很不規範,降低開發效率;
那如何來解決這個問題呢,當然想到了我們的關鍵字this
class person
//構造方法過載
public person(string name)
public person(string name, int age)
public string getmessage()
public void setname(string name)
public void setage(int age)
}
this呼叫普通方法就是:this.方法名
這裡不再詳細的講如何呼叫普通方法,很簡單!
// this表示當前物件
class person
}public class class2
}
這段**的結果為:
當前物件為person@1db9742person@1db9742
-------------------------------
當前物件為person@106d69c
person@106d69c
c語言中的static和c 中的static比較
c語言中 static如果是修飾的全域性變數表示,該變數不能被其他檔案使用,函式也是一樣.如果修飾區域性變數,那麼,該變數存放在靜態區,只能被初始化一次,生命週期隨之檔案的結束而結束.c 中 static修飾的變數,只能在類外初始化,而且,必須初始化,可以由類直接訪問,可以在同族類中實現資料共享,在...
java裡為什麼主函式前面要加static修飾
先說一下static 1.static 修飾的域,我們叫靜態域,它是歸類所有的,被所有物件所共享,只有乙個 2.static修飾的區塊,域只會初始化一次 3.static修飾的域或方法,可以直接通過類的名字加上.進行呼叫 4.static修飾的方法內不能直接使用非靜態成員 static關鍵字,告知編...
java中重寫和過載
過載是如 public class myslidingdrawer extends slidingdrawer public myslidingdrawer context context,attributeset attrs,int defstyle 其中myslidingdrawer的2個構造函...