關於C#物件導向2

來源:互聯網
上載者:User

標籤:

 多態:表示不同的對象可以執行相同的動作,但是通過它們自己的實現代碼來執行。這裡需要將父類將該成員聲明為虛擬,而且用到了方法重寫(override).

 

     抽象類別:用abstract聲明抽象類別,注意抽象類別不能執行個體化,抽象方法必須被子類重寫。

 

      介面:是把隱式公用方法和屬性群組合起來,以封裝特定的功能的一個集合,一旦類實現了介面,就可以支援介面所指定的所有屬性好成員。一個類可以支援多個介面,多個類也可以支援相同的介面。

 

      集合:是優於數組,.NET Framework提供了用於資料存放區和檢索的專用類。集合隨著我們向裡邊添加元素而自動增加,自動調節大小。提供了對堆棧,隊列和雜湊表的支援。

 

     泛型:具有預留位置(即參數類型)的類,結構,介面和方法。和集合緊密聯絡,泛型集合可以獲得型別安全的直接優點。也就是說類型固定了。

 

 定義類和介面的代碼:

<span style="font-size:18px;">    abstract class Animal//利用關鍵字abstract定義了一個抽象類別      {          protected string name = "";          public Animal(string name)          {              this.name = name;          }          public Animal()          {              this.name = "無名";          }            protected int shoutNum = 6;//叫聲的次數          public int ShoutNum          {              get              {                  return shoutNum;              }              set              {                  shoutNum = value;               }          }              public string shout()//叫聲發出的代碼          {              string result = "";              for (int i = 0; i < shoutNum; i++)                   result += getshoutsound() + ", ";//調用了getshoutsound的虛方法                  return "我的名字叫"+ name + ""+result ;             }          protected virtual string getshoutsound()//修飾符virtual表示此方法為虛方法,可以被子類重寫          {              return "";          }      }              //定義不同的子類,來實現父類,其實就是多態的很好體現      class Cat:Animal //子類貓      {          public Cat():base()          {}          public Cat (string name):base (name)          {}          protected override string getshoutsound()          {              return"喵";          }      }          class Dog : Animal//子類狗      {          public Dog()              : base()          { }          public Dog(string name)              : base(name)          { }          protected override string getshoutsound()          {              return "喵";          }      }          class Cattle : Animal//子類牛      {          public Cattle()              : base()          { }          public Cattle(string name)              : base(name)          { }          protected override string getshoutsound()          {              return "哞";          }      }          class sheep:Animal//子類羊      {          public sheep ():base()          {}          public sheep(string name)              : base(name)          { }          protected override string getshoutsound()          {             return "咩";          }      }          interface Ichange//定義了一個介面      {          string changething(string thing);      }          class Machinecat : Cat, Ichange//定義了個機器貓,繼承父類貓,並使用了介面Ichange      {          public Machinecat()              : base()          { }          public Machinecat(string name)              : base(name)          { }          public string changething(string thing)          {              return base.shout ()+ "我有萬能口袋,我可以變出:" + thing;          }      }</span>  

下邊是用戶端的代碼:

<span style="font-size:18px;">        //private Animal[] arrayAnimal;//聲明一個動物數組          //集合的使用         IList<Animal> arrayAnimal;//聲明一個泛型集合變數,用介面Ilist,注意Ilist<Animal>表示此集合變數只能接受Animal類型            //貓叫的按鈕事件          private void button1_Click(object sender, EventArgs e)          {              Cat cat = new Cat("咪咪"); //類的執行個體化              cat.ShoutNum = 7;                MessageBox.Show(cat.shout());          }          //狗叫的按鈕事件          private void button2_Click(object sender, EventArgs e)          {              Dog dog = new Dog("旺財");//這裡只是簡單的調用方法,即可實現目的,體現了封裝的特性              dog.ShoutNum = 6;              MessageBox.Show(dog.shout());          }          //動物報名的按鈕          private void button3_Click(object sender, EventArgs e)//動物報名按鈕,          {              //arrayAnimal = new Animal[5];//執行個體化最多可以可報名5個的動物數組對象              arrayAnimal = new List<Animal> ();//執行個體化List對象              arrayAnimal.Add(new Cat ("小花"));//報名分別是貓和狗              arrayAnimal.Add( new Dog("阿毛"));              arrayAnimal.Add ( new Dog("小黑"));              arrayAnimal.Add(new Cat("嬌嬌"));              arrayAnimal.Add( new Cat("咪咪"));                    MessageBox.Show(arrayAnimal.Count.ToString());//列印出我們添加的個數                arrayAnimal.RemoveAt(1);//這裡還可以刪除我們多添加的。            }          //讓報名的所有動物進行叫聲比賽          private void button4_Click(object sender, EventArgs e)          {              foreach (Animal item in arrayAnimal)//遍曆整個數組,讓他們一次實施shout的方法              {                  MessageBox.Show(item.shout());              }            }          //叮噹貓變出東西的事件代碼          private void button5_Click(object sender, EventArgs e)          {              Machinecat mcat = new Machinecat("叮噹");//執行個體化機器貓              Machinecat mcat1 = new Machinecat("叮噹2");                Ichange[] array = new Ichange[2];//聲明一個介面數組,將兩個執行個體賦值給數組              array[0] = mcat;              array [1]=mcat1;                MessageBox.Show(array[0].changething("各種各樣的東西!"));//利用多態性,實現不同的changething              MessageBox .Show (array[1].changething ("好多好多東西哈!"));          }</span>  

 

關於C#物件導向2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.