建構函式與方法過載

2021-08-18 18:33:51 字數 2686 閱讀 6549

建構函式:

在定義類時,可以使用建構函式定義物件建立的初始流程。建構函式是與類名稱同名,無須宣告返回型別的方法。例如:

package hello;

public

class loaddemo

}

如果這樣建立loaddemo物件,成員a與txt會初始兩次

loaddemo ld=new loaddemo(8, "gg");
建立物件時,資料成員就會初始化,如果沒有指定初始值,則會使用預設值初始化。預設值表:

資料型別

初始值byte

0short

0int

0long

0lfloat

0.0f

double

0.0d

char

\n0000

boolean

false

類null

所以使用new建立物件時,a與txt分別先初始為0與nu11,之後會再通過建構函式流程,設定為構造函式引數的值。如果定義類時,沒有撰寫任何建構函式,編譯程式會自動加入乙個無引數、內容為空的建構函式。

正因為編譯程式會在你沒有撰寫任何建構函式時,自動加入預設建構函式( default constructor),所以在沒有撰寫任何建構函式時,也可以這樣以無自變數方式呼叫建構函式

loaddemo ld=new loaddemo();
只有編譯程式自動加入的建構函式,才稱為預設建構函式,如果自行撰寫無引數、沒有內容的建構函式,就不稱為預設建構函式了。雖然只是名詞定義,不過要區別一下兩者的不同。

如果已經撰寫了建構函式,編譯程式就不會自動建立預設建構函式。即上面那樣已經撰寫過就不可以用

loaddemo ld=new loaddemo();
建立物件。

方法過載

視使用情境或條件的不同,建立物件時也許希望有對應的初始流程。可以定義多個建構函式,只要引數型別或個數不同,這稱為過載( overload)建構函式。例如:

public

loaddemo(int a)

}public

loaddemo(int a,string txt)

if(txt!=null)

}

在這個**段中,建立時有兩種選擇:一是使用 new some(10)的方式,二是使用newome(10," 「some text」)的方式。

有些場合建議,如果定義了有引數的建構函式,也可以加入無引數的建構函式,即使內容為空也無所謂,這是為了日後使用上的彈性例如,運用反射(reflcction)機制生成物件的需求,或者繼承時呼叫父類建構函式時的方便。

定義方法時也可以進行過載,可為類似功能的方提供統一名稱,但根據引數型別或個數的不同呼叫對應的方法。以 string類為例,其 valueof()方法就提供了多個版本 :

public

static string valueof(boolean b)

public

static string valueof(char c)

public

static string valueof(int i)

public

static string valueof(char data)

public

static string valueof(char data,int offset,int count)

public

static string valueof(object obj)

雖然呼叫的方法名稱都是 valueof(),但根據傳遞的自變數型別不同,會呼叫對應的方法。例如,呼叫 string. values(10)因為10是int型別,所以會執行 valueof(inti)的版本,若是 string.. valueof(10.12),因為10.12是 double型別,會執行 valueof(double d)的版本。方法過載讓程式設計人員不用苦惱方法名稱的設計,可用一致的名稱來呼叫類似功能的方法,方法過載可根據傳遞自變數的型別不同,也可根據引數列個數的不同來設計方法過載。例如:

public

class someclass

public

void

somemethod ()

public

void somemethod(float f)

注意:返回值型別不可作為方法重依據,例如以下方法過載並不正確,編譯程式會將兩個 somemethod()視為重複定義而編譯失敗:

public

class some

public

double somemethod (int i)

}

在jdk5之後使用方法過載時,要注意自動箱、拆箱問題:

public

loaddemo(int a)

public

loaddemo(integer integer)

loaddemo ld=new loaddemo(8);顯示int。

只有這樣明確指出loaddemo ld=new loaddemo(new integer(1));顯示integer。

構造方法與方法過載

方法的過載 1.方法過載的目的 為了讓方法名相同而形參不同的構造方法同時存在,必須用到 方法過載 2.方法過載的判斷條件 引數個數不同或引數型別不同。返回值不是判斷條件。構造方法 1.方法名稱與類名相同。2.無返回值,不用void修飾。過載與重寫的區別 引數列表 返回型別 訪問限制 呼叫 過載方法 ...

構造方法與方法過載

a 構造方法 構造方法即建構函式或構造器。每乙個類中都有乙個預設的建構函式。比如在下面 中 1 public police string n 2.public police 在上面 中,兩個函式方法的方法名相同,引數不同,後者沒有引數,前者有字串型別的引數。建構函式特點 1 建構函式不寫返回值,但是...

構造方法與方法過載,總結

乙個巧合,我有點想法來藍傑,考慮了一天,聽了一節課,就決定了,挑戰一下!這是我的第一篇總結,寫的不好,請見諒。一 構造方法 格式 public 類名 注 普通方法的格式 public 返回值 方法名 引數 每個類都有乙個預設的構造方法,但是預設的構造方法只有在我們沒有自己定義時才會起作用,我們還可 ...