構造函數:構建創造對象時調用的函數
特色:
1.函數名與類名相同。
2.不用定義返回值類型。
3.沒有具體的返回值。函數
public class Demo { private int age; private String name; //省略get、set方法 public Demo(){//無慘構造不寫時系統將默認添加一個無慘構造 } }
做用:
給對象初始化,建立對象時會先調用構造方法對對象進行初始化。
注意:
1.默認構造函數的特色。不寫構造函數時系統會自動給加一個默認的構造函數,若是本身 定義了一個構造函數,系統不會再給添加一個默認的構造函數。
2.多個構造函數是以重載的形式存在的。
3.建立對象都必需要經過構造函數初始化。this
1 public class Demo { 2 private int age; 3 private String name; 4 //省略get、set方法 5 public Demo(){//無參構造不寫時系統將默認添加一個無慘構造 6 } 7 public Demo(int age) {//有參構造多個構造函數以重載的形式存在 8 this.age = age; 9 } 10 public Demo(String name){ 11 this.name = name; 12 } 13 public Demo(String name,int age){ 14 this(age); 15 this.name=name; 16 } 17 18 public static void main(String[] args) { 19 Demo d = new Demo(10);//建立對象時會先去找與之參數對應的構造函數進行初始化 20 }
通常函數和構造函數的區別:
構造函數:
對象建立時,就會調用與之對應的構造函數,對對象進行初始化。
對象建立時,會調用且只調用一次
通常函數:
對象建立後,須要函數功能是才調用。
對象建立後,能夠調用屢次。
何時定義構造函數:
在描述事物時,該事物一存在就具有一些內容,這些內容都定義在構造函數中。spa
this關鍵字:
做用:
1.當成員變量和局部變量重名時,能夠用this關鍵字來區分code
1 public class Demo { 2 private int age;//成員變量 3 private String name; 4 public Demo(int age) {//參數爲局部變量 5 this.age = age;//this.age表示當前對象的age用來跟局部變量age區分 6 } 7 }
2.當構造函數須要調用已有的構造函數時能夠有this關鍵字,須要注意的是須要將調用的 構造函數放在第一行。對象
1 public class Demo { 2 private int age; 3 private String name; 4 public Demo(int age) { 5 this.age = age; 6 } 7 public Demo(String name,int age){ 8 this(age);//調用已有的構造函數,注意調用的構造函數要放在第一行 9 this.name=name; 10 } 11 }
this:
表明當前對象。
是所在函數所屬對象的引用。
簡單來講:哪一個對象調用了this所在的函數,this就表明哪一個對象。blog