構造器(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物件的同時傳入...