今天小智終於開始寫C#的博客了,c語言屬於面向過程的編程語言,而c#則屬於面向對象的編程語言,相信看此片博客的同伴們應該已經瞭解面向對象以及他的三大特性:多態,封裝,繼承了吧,今天小智對此也不做太多介紹了,小智今天要跟大家分享的是c#中構造函數的定義,重載以及繼承。
首先我們要了解一下構造函數有什麼用?
1.構造函數的主要作用是在創建對象(聲明對象)時初始化對象,一個類定義至少要有一個構造函數,如果定義類時沒有聲明構造函數,系統會提供一個默認的構造函數
首先我們看看構造函數聲明,重載以及繼承調用的代碼:
class Person
{
public Person(string name, int age)
{
this.Name = name;
this.Age = age;
}
public Person(string name, int age, char sex) //構造函數的重載
: this(name, age)
{
this.Sex = sex;
}
public Person() //構造函數的重載
{}
}
class Chinese:Person
{
public Chinese (string name ,int age ,char sex):base (name,age,sex ) //構造函數的繼承調用
{ }
}
構造函數的聲明有幾點要求:1.沒有返回值;(沒有void,int,string等)
2.構造函數名稱必須與類同名。(必須是Person)
也就是public Person(int age ,string name)
但是有些細心地人就會問那麼下面爲什麼還有這段代碼呢,
public Person(string name, int age, char sex) //構造函數的重載
: this(name, age)
{
this.Sex = sex;
}
public Person() //構造函數的重載
{}
這個其實是構造函數的重載。
重載:函數名不變,只改變參數的個數或參數的類型
作用:重載構造函數的主要目的是爲了給創建對象提供更大的靈活性,以滿足創建對象時的不同需求,如上,可以傳0個參數也可以傳2個,當然也可以傳3個參數。
在構造函數this用於限定被相同的名稱隱藏的成員,不要this也是可以的,但是在屬性定義中的索引器中就是不可或缺的。
下面我們在介紹構造函數的繼承調用,代碼如下:
class Chinese:Person
{
public Chinese (string name ,int age ,char sex):base (name,age,sex ) //構造函數的繼承調用
{ }
}
Person p1=new Person();
//Person p1=new Person("小明",18);
//Person p1=new Person("小明",18,'男')
這幾種編譯都可以通過。