上一篇部落格我們講了類和對象的基本概念,接下來我們就要講一下建構函式和重載。想必大家對建構函式都有一定的認識,下面我們就來一起探討探討。 一 、什麼是建構函式 與類名相同 無傳回值 對執行個體進行初始化 建構函式總是和new運算子一起被調用。 建構函式可以有0個、1個或多個參數。
public class Human { private String name; //這一個無參建構函式 public Human(){ } //這是一個有參建構函式 public Human(String name){ this.name = name; }}
在Java的類中,如果不顯示聲明建構函式,JVM 會給該類一個預設的無參建構函式。當一個類聲明了建構函式以後,JVM 是不會再給該類分配預設的建構函式。當然,一個類可以有多個建構函式,它們之間稱為重載,下面我們就會講到。下面我舉個例子來說明建構函式的作用。
public class Human { private String name; private int age; //我們在定義一個有參建構函式之後,預設無參建構函式就會被取代,因 此一般都會在該類中添加一個無參建構函式 public Human(){ } //重載一個建構函式,下面會講到重載 public Human(String name,int age){ this.name = name; this.age = age; } public static void main(String[] args) { //下面我們用new關鍵字來建立一個對象 Human human01 = new Human(); Human human02 = new Human("孫丁",18); System.out.println("human01------->name:"+human01.name+" age:"+human01.age); System.out.println("human02------->name:"+human02.name+" age:"+human02.age); }}
運行結果如下:
human01------->name:null age:0human02------->name:孫丁 age:18
上述代碼很好的說明我們通常通過有參建構函式來進行對象的初始化,而不是建立對象,建立對象是用new來完成的。 二 、方法的重載
重載的特點: 同一個類中多個方法有相同的名字,不同的參數列表,這種情況稱為方法重載。 當重載方法被調用時,Java編譯器根據參數的類型和數量來確定實際調用哪個重載方法的版本。 方法重載不考慮方法的傳回型別。 方法重載是Java實現物件導向的多態性機制的一種方式。
public class TestOverload { public void run(){ System.out.println("test.run():沒有參數的方法"); } public void run(int a){ System.out.println("test.run(1):一個參數的方法"); } public void run(int a,String b){ System.out.println("test.run(1,b):二個參數的方法"); } public void run(String a,int b){ System.out.println("test.run(a,1)參數類型順序不同也是可以的"); } /* 這種重載是錯誤的,因為重載和傳回型別沒有關係 public int run(String a,int b){ System.out.println("和傳回值類型沒有關係"); } */ public static void main(String[] args) { TestOverload test = new TestOverload(); test.run(); test.run(1); test.run(1, "b"); test.run("a",1); }}
運行結果:
test.run():沒有參數的方法test.run(1):一個參數的方法test.run(1,b):二個參數的方法test.run(a,1)參數類型順序不同也是可以的
三 、總結
建構函式和重載的知識點很少,而且很容易理解,看完上面的內容,大家應該有了充分的認識了,接下來我準備講解this和super關鍵字,希望大家多多關注。