無引數的構造器

2022-09-15 19:45:16 字數 1078 閱讀 2729

如果在構造器中沒有顯式地給域賦予初值,那麼就會被自動賦為預設值:數值為0,布林值為false,物件引用為null.

這是域與區域性變數的主要不同點.必須明確地初始化方法中的區域性變數.但是,如果沒有初始化類中的域,將會被自動初始化為預設值.

class

employee

例如,假定employee類沒有在構造器中進行初始化,就會預設地將salary域初始化為0,將name域初始化為null.

但是,這並不是一種良好的程式設計習慣.如果此時呼叫getname方法,則會得到乙個null引用,這不是我們所希望看到的結果.

很多類都包含乙個無引數的建構函式,物件由無引數建構函式建立時,狀態會設定為適當的預設值.例如,下面是employee類的無引數建構函式

public

employee()

如果在編寫乙個類時沒有編寫預設的構造器,那麼系統就會提供乙個預設無引數構造器.這個構造器將所有例項域設定為預設值.於是,例項域中的數值型資料設定為0,布林型資料設定為false,所有物件變數設定為null.

如果類中提供了至少乙個構造器,但是沒有提供無引數的構造器,則在構建物件時如果沒有提供引數就會被視為不合法.例如為employee類提供乙個簡單的構造器,不提供無引數構造器.

employee(string n,double

s)

對於這個類,構造預設的雇員屬於不合法,也就是呼叫

employee e = new employee();

將會產生錯誤.

請記住,僅當類沒有提供任何構造器的時候,系統才會提供乙個預設的構造器.如果在編寫類的時候,給出了乙個構造器,哪怕是很簡單的,要是想讓這個類的使用者能夠採用如下方式構造例項:

classname c = new classname();

就必須提供乙個預設的構造器(即不帶引數的構造器).如果希望所有域被賦予預設值,可以採用下列方式

public

classname()

C 結構體中無引數的預設建構函式

我們知道,c 類中當使用者沒有顯示的宣告建構函式時,編譯器會自動生成乙個無引數的預設建構函式 結構體除了成員訪問許可權外與類很相似,並且在學習一些庫的 時出現了這種寫法,故作如下測試 include include using namespace std intmain 未定義顯示建構函式 直接使用...

多個構造器引數的處理方式 構建器

第一種處理方式 這個類有很多個引數 其中的servingsize和servings是必須的,其他的是可選的 我們可以採用重疊構造器 telescoping constructor 在這個模式之下,我們最少只需要提供引數個數最少的那個構造器即可,其他的引數預設為0 public class nurtr...

有參構造與無參構造

定義person類 public class person 2.有參構造 一旦定義有參構造,無參就必須顯示定義 public person string name main函式呼叫 person person newperson 和平 system.out.println person.name 一...