天天看點

C#中構造函數的作用

C#中構 造函數的作用

共同點:
都是執行個體化對象,初始化資料的
預設構造是說所有的類都從祖先object那繼承了空參的構造方法,你不寫與寫空參構造都存在,而有參數的構造一般是自己寫的,寫就有不寫就沒有,它的作用和空參的一樣,隻是它裡面可以有參數,給你個例子來說明吧
有一個類Monitor它有屬性String height;String
width
public Monitor(){}
public Monitor(String height,String width){}
有一個空參的一個有參的構造的方法 
在main方法裡我做初始化動作
Monitor monitor=new Monitor();
這個構造隻是把顯示器這個對象創造出來了,它的屬性就沒有值,也可以再手動給它賦上值
如:monitor.height=100;
   monitor.width=200;
用有參的就不一樣了,少很多事
Monitor monitor2=new Monitor("100","200");
在這裡我隻要把想放進去的參數直接放進去就能給我的屬性賦上值,是不是省了很多事?
這就是它的優勢!
回答完結!      
構造函數 是一種特殊的方法 主要用來在建立對象時初始化對象 即為對象成員變量賦初始值 
  總與new運算符一起使用在建立對象的語句中 特别的一個類可以有多個構造函數 可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載

構造函數與其他方法的差別

  1.構造函數的命名必須和類名完全相同;而一般方法則不能和類名相同.
  2.構造函數的功能主要用于在類的對象建立時定義初始化的狀态.它沒有傳回值,也不能用void來修飾.這就保證了它不僅什麼也不用自動傳回,而且根本不能有任何選擇.而其他方法都有傳回值.即使是void傳回值,盡管方法體本身不會自動傳回什麼,但仍然可以讓它傳回一些東西,而這些東西可能是不安全的.
  3.構造函數不能被直接調用,必須通過new運算符在建立對象時才會自動調用,一般方法在程式執行到它的時候被調用.
  4.當定義一個類的時候,通常情況下都會顯示該類的構造函數,并在函數中指定初始化的工作也可省略不去Java編譯器會提供一個預設的構造函數.此預設構造函數是不帶參數的.而一般方法不存在這一特點       
簡單的來說構造函數就是用來建立對象用的,說的專業些叫執行個體化對象。

定義:
class A
{
public A(){}
}

使用:
A a=new A();//在這裡,A()就是就是構造函數。
需要注意的一點是,如果類裡面沒有定義構造函數,編譯器也會自動生産一個空構造函數,類的各個成員都賦上預設值。
但是如果在類裡面隻定義了一個私有的構造函數的時候,那麼這個類将不能被執行個體化。
class A
{
string a;
private A() { }//這個類不能被執行個體化
} 

如果我們定義了帶參數的構造函數,而沒有定義不帶參數的構造函數,那麼在執行個體化這個類的對象的時候必須提供參數。
class A
{
string a;
public A(string str) {a=str; }
} 
不能這麼執行個體化對象 A a=new A();       
構造函數分為動态構造函數和靜态構造函數。
動态構造函數是類或結構執行個體化時,為其配置設定記憶體空間,完成類或結構當中成員變量的初始化工作。動态構造函數可以重載,即相同構造函數名稱擁有不同類型和數目的多個構造函數。帶參數的構造函數和不帶參數的構造函數沒有本質差別,帶參數的構造函數可以通過傳入的變量控制或者直接初始化其中的成員變量,在構造函數中可以為成員變量初始化預設值。
靜态構造函數不允許攜帶參數,即一個類中隻允許有一個靜态構造函數。它在第一次通路靜态成員或者第一次執行個體化動态該類的對象之前調用。       

 轉載:

http://www.cnblogs.com/weihengblogs/archive/2012/11/10/2764188.html http://www.cnblogs.com/weihengblogs/archive/2012/11/10/2764188.html http://www.cnblogs.com/xiaz/p/4613722.html http://www.cnblogs.com/weihengblogs/archive/2012/11/10/2764188.html