C 中的預設構造器和過載構造器

2021-05-27 06:07:55 字數 2028 閱讀 9174

使用 new 關鍵字建立乙個物件時,"runtime"必須使用那個類的定義來構造物件,"runtime"必須從作業系統申請乙個記憶體區域,在其中填充由類定義的字段,然後呼叫乙個構造器執行必須的任何初始化工作。

構造器(constructor)是一種特殊方法(method),它在建立類的乙個例項時自動執行。它與類(class)同

名,能獲取引數,但不能返回任何值(即使是 void)。

每個類都至少要乙個構造器。如果不提供自己的構造器,編譯器會幫你自動生成乙個預設構造器。但是編譯器生

成的預設構造器不做任何實際的事情。預設構造器非常好寫,只需新增乙個與類同名的 public 方法,不讓它返

回任何值就可以了。

若省略 public 關鍵字,構造器將預設為 private(這和其他任何方法和字段是一樣的)。private 構造器不能再類的

外部建立物件。

下面建立乙個 student 類,裡面有預設構造器。

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace areaclass

", student1.name);

// name 定義為 public 型別,可以在類 student 外部訪問

"age is ", student1.age);

// age 定義為 private 型別,不能再類 student 外部訪問

student1.score(90); // 方法自己傳遞實參}}

class student

public void score(int score)

's score is ", name, score);}}

}

執行後結果如下圖所示:

下面建立乙個 circle 類,裡面有預設構造器和過載的構造器。

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace areaclass

", c.area());

console.writeline("a = ", c.a); // c.a = 10

console.writeline("static b = ", circle.b); // static c.b = 1

console.writeline("c = ", c.c); // c.c = 1

c.radius); // radius 在 circle 類內部定義時

// 是 private 型別,所以不能在外部訪問

console.writeline();

console.writeline("過載的構造器:");

circle d;

d = new circle(9); // 呼叫過載的構造器,此處用構造器給方法傳遞引數

console.writeline("area = ", d.area());

console.writeline("static b = ", circle.b); // static b.b = 2

console.writeline("c = ", d.c); // b.c = 1

console.writeline();}}

class circle

public circle(int intiaradius) // 過載的構造器

public double area()}}

執行後結果如下圖所示:

構造器概述和預設構造器

在建立某個物件的時候,如下 student s1 new student 這個 特別像在呼叫乙個方法名稱為student的無引數方法 我們將這種特殊的方法稱之為構造方法,構造器 constructor 但在student類中,又找不到該構造方法卻又不報錯 編譯器在編譯原始檔的時候,會建立乙個預設的構...

構造器的過載

兩個引數的構造器b public public static void main string args 用this呼叫另乙個構造器只能在構造器中使用,而且必須在構造器執行體第一條語句使用。為什麼要用this來呼叫另乙個過載的構造器?而不是把另乙個構造器的 複製貼上到這個構造器裡?從功能的實現上來看...

構造方法構造器 構造方法過載

一 構造方法 構造器 定義 1 構造方法就是類似於方法,但是構造方法沒有返回值 不用也不能寫void 2 構造方法名字必須與類名相同 3 構造方法不能被static修飾 構造方法屬於物件,static屬於類 4 一旦定義帶參的建構函式,程式將不再為你自動建立空構造器。作用 可以在new物件的同時傳入...