程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#VS面向對象基礎

C#VS面向對象基礎

編輯:C#入門知識


      多態:表示不同的對象可以執行相同的動作,但是通過它們自己的實現代碼來執行。這裡需要將父類將該成員聲明為虛擬的,而且用到了方法重寫(override).
 
     抽象類:用abstract聲明抽象類,注意抽象類不能實例化,抽象方法必須被子類重寫。
 
      接口:是把隱式公共方法和屬性組合起來,以封裝特定的功能的一個集合,一旦類實現了接口,就可以支持接口所指定的所有屬性好成員。一個類可以支持多個接口,多個類也可以支持相同的接口。
 
      集合:是優於數組,.NET Framework提供了用於數據存儲和檢索的專用類。集合隨著我們向裡邊添加元素而自動增加,自動調節大小。提供了對堆棧,隊列和哈希表的支持。
 
     泛型:具有占位符(即參數類型)的類,結構,接口和方法。和集合緊密聯系,泛型集合可以獲得類型安全的直接優點。也就是說類型固定了。
 
    下邊我們通過這個例子來理解上邊的概念:
 
    定義類和接口的代碼:
 
[csharp] 
<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> 

下邊是客戶端的代碼:
[csharp] 
<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> 
      這個學習也是非常基礎的,學習設計模式的基礎!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved