C#構造函數的聲明、重載與繼承調用

今天小智終於開始寫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 )        //構造函數的繼承調用
	        { }
	}

這段代碼是構造函數的繼承調用,首先是類的繼承,class Chinese :Person創建一個類Chinese 繼承Person類,下來是在類Chinese 聲明一個構造函數,和父類Person不同的是後面有個base(name,age,sex),這其實就是繼承調用,base指向的是父類Person,然後子類Chinese繼承父類Person的name,age,sex。
而因爲在Person類中構造函數重載分別有0,2,3個參數,所以在main函數裏面可以有這幾種創建對象的方式:
Person p1=new Person();
//Person p1=new Person("小明",18);
//Person p1=new Person("小明",18,'男')
這幾種編譯都可以通過。

發佈了20 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章