我們復習.Net的這些日子里


            今天是我們復習前面學習的第三天,也是在今天我們結束了復習。之前上學時間感覺知識全是生僻的,在生活中很少用到,因此喜歡重復的記憶,而現在學習的知識全是現在乃至未來,將是每天我們使用的,所以就感覺沒必要重復記憶啦,只要我記得知識點的存在然后會想起來具體的內容的,可是今天的復習我發現這樣的做法還是不對的,也可能只是剛開始啦,太多東西都是硬性的,因此我想通過這篇文章來重新撿起來我忘記的,嘿嘿。下面就來說下具體容易忘記的和做起來題還是比較生硬的吧。

       一.構造函數

       構造函數方法名和類名一樣,沒有返回值,連void都不用。構造函數可以有參數,new對象的時候傳遞函數參數即可,如果不指定構造函數,則類有一個默認的無參構造函數。如果指定了構造函數,則不再有默認的無參構造函數,如果需要無參構造函數,則需要自己來寫。構造函數可以重載,也就是有多個參數不同的構造函數。我在學習的過程中知道怎么來寫構造函數,但是卻忘記啦有“base”這個關鍵字可以繼承傳參,只是記得在輸出時間可以使用,因此現在來總結下啦,嘿嘿,下面寫一道題來加深我的記憶啦。

          定義父親類Father(姓lastName,財產property,血型bloodType),兒子Son類(玩游戲PlayGame方法),女兒Daughter類(跳舞Dance方法),調用父類構造函數(:base())給子類字段賦值。

//定義父親類Father(姓lastName,財產property,血型bloodType),
    class Father
    {
        public Father(string l, double p, string b)
        {
            this.lastname = l;
            this.property = p;
            this.bloodtype = b;
        }
        string lastname;

        public string Lastname
        {
            get { return lastname; }
            set { lastname = value; }
        }
        double property;

        public double Property
        {
            get { return property; }
            set { property = value; }
        } 
        string bloodtype;

        public string Bloodtype
        {
            get { return bloodtype; }
            set { bloodtype = value; }
        }
    }
 //女兒Daughter類(跳舞Dance方法),
    class Daughter:Father
    {
        public Daughter(string l, double p, string b):base(l,p,b)
        {
        }
        public void Dance()
        {
            Console.WriteLine("我的名字是{0},我的血液是{1},有{2}財產,而且我會跳舞",base.Lastname,base.Bloodtype,base.Property);
        }
    }
 //兒子Son類(玩游戲PlayGame方法),
    class Son:Father
    {
        public Son(string l, double p, string b):base(l,p,b)
        {
        }
        public void PlayGame()
        {
            Console.WriteLine("我的名字是{0},有{1}財產,我的血液是{2},而且我會玩游戲\n", base.Lastname, base.Property, base.Bloodtype);
        }
    }
class Program
    {
        //調用父類構造函數(:base())給子類字段賦值
        static void Main(string[] args)
        {
           Son  s = new Son("大大", 7829392, "A");
           s.PlayGame();
            Daughter d = new Daughter("笑笑",2793178062,"B");
            d.Dance();
            Console.ReadKey();
        }
    }

              在這個題中有一個父類Father,他有三個屬性已經用一個構造函數的形式傳參,而在兒子和女兒中也存在這幾個屬性啊,可以繼承啦,但是此時可以用base在構造函數中直接傳參,非常方便啦,這個小知識點做題時間我給忽略啦,而且那時間看題時間,還以為就只是在兒子女兒各自的方法輸出的時間使用關鍵字的,嘿嘿。

         二.虛方法和抽象方法

        關於虛方法需要注意的幾點:
        1.父類中如果有方法需要讓子類重寫,則可以將該方法標記為virtual
        2.虛方法在父類中必須有實現,哪怕是空實現。
        3.虛方法子類可以重寫(override),也可以不重寫
        關於抽象方法注意的幾點:
        1.需要用abstract關鍵字標記
        2.抽象方法不能有任何方法實現。
        3.抽象成員必須包含在抽象類中。
        4.由於抽象成員沒有任何實現,所以子類必須將抽象成員重寫。
        5.抽象類不能實例化,抽象類的作用:抽象類的作用就是為了讓子類繼承。
        6.抽象類中可以包括抽象成員,可以包括有具體代碼的成員。
        7.還有抽象方法不能用static修飾
        綜上幾點,虛方法和抽象方法不是現在不會寫啦,而是感覺不能區分什么時間使用虛方法,什么時間使用抽象類,好多在使用時抽象類實現的功能使用虛方法也是可以實現的啦,這個有點迷茫啦。其實像我前幾天博客寫的一個工廠模式的一個練習題,那個里面的shape就是一個父類,而他就是一個抽象類,不需要實現其方法,但是在其中寫一個虛方法也是可以實現的啦,所以沒找到他們的區別。
         三.接口
        •1.接口中只能包含方法(屬性、事件、索引器也都是方法)
        •2.接口中的成員都不能有任何實現。光說不做
        •3.接口不能被實例化。
        •4.接口中的成員不能有任何訪問修飾符。(默認為public)
        •5.實現接口的子類必須將接口中的所有成員全都實現。
        •6.子類實現接口的方法時,不需要任何關鍵字,直接實現即可。
        •7.接口存在的意義就是為了多態。
            接口學習起來還是比較簡單的啦,在這里復習時間忘記啦第4點,它的默認修飾符為public,因為接口就是用來實現其方法的啦,所以默認修飾符一定為public啦。
        四.靜態與非靜態
        靜態:使用關鍵字static;調用方法時間只能使用類名調用;在靜態方法中訪問靜態成員,不可以直接訪問實例成員,調用前初始化。
        非靜態:不需要關鍵字static,調用方法時間可以實例化對象,用對象調用方法(即初始化對象),在實例方法中訪問實例成員,也可以訪問靜態成員。
        在復習這個時間怎么把這幾個知識點給忘記啦,之前記憶的甚是清楚啦,現在忽然想起啦卻感覺陌生啦,還是使用的少吧,接下來我就要及時的復習啦,嘿嘿,不能再這樣,學習完啦,好多又忘記啦。

        五.字符串的處理

        對待字符串的處理使用起來還是還是會做題的,但是好多都是使用微軟提供給我的方法,而我不是不會調用方法,而是在字符串字符的類型轉換上面總是不知道用哪個類型更好,或者應該轉換為那個類型,下面就簡單的舉例說一下啦.

static void Main(string[] args)
        {
            #region MyRegion
            string num = "I love you";
            string array = num.Substring(0, 1).ToLower();
            string array1 = num.Substring(2, 4);
            string array2 = num.Substring(5);
            var arr = array.ToCharArray().Reverse();
            var arr1 = array1.ToCharArray().Reverse();
            var arr2 = array2.ToCharArray().Reverse();
            foreach (var item in arr)
            {
                Console.Write("{0}", item);
            }
            foreach (var item1 in arr1)
            {
                Console.Write("{0}", item1);
            }
            foreach (var item2 in arr2)
            {
                Console.Write("{0}", item2);
            }
            Console.ReadKey();

             像上面這樣的題一樣,每次做起來這個類型的題,總是不知道該怎么改變其類型啦,其實這個就是昨天做的這個題,在做這個題時間浪費啦好久的時間啊,這個在前面的那幾個類型轉換上面糾結啊,直到今天才想起來啦我們經常會想到的var關鍵字,換成了它,感覺簡單啦好多,不用再糾結類型轉換該使用哪個好啦,也知道在做題時間會用提示需要使用什么類型,但是在這個方面就是沒有很好地掌握啦。

         六.集合       

         集合常用操作 添加、遍歷、移除, 命名空間System.Collections
         1.ArrayList 可變長度數組,使用類似於數組, 屬性 Capacity(集合中可以容納元素的個數,翻倍增長);
           Count(集合中實際存放的元素的個數。)
–           方法: –Add();AddRange(Icollection c);Remove();RemoveAt();Clear(); –Contains();ToArray();Sort():排序;Reverse():反轉。
         2.Hashtable 鍵值對的集合,類似於字典,Hashtable在查找元素的時候,速度很快。
          –Add(object key,object value); –hash[“key”] –hash[“key”]=“修改”; –.ContainsKey(“key”); –Remove(“key”);
          –遍歷: –hash.Keys –hash.Values/DictionaryEntry
         3. List<T>類似於ArrayList,ArrayList的升級版。各種方法:Sort()、Max()、Min()、Sum()…
         4. Dictionary<K,V>類似於Hashtable,Hashtable的升級版。
                在復習到集合這一塊時間,ArrayList和List還是很熟悉的,而且他的幾個方法感覺也不陌生啦,但是在Dictionary和Hashtable時間就生疏了很多,他的值通過key來獲取的,這個使用的或許很少,但是的確感覺麻煩啦許多啊,做練習時間也沒所有使用。所以還是要熟練地看下具體的方法。
          七.文件類
         File:操作文件,對文件整體操作。拷貝,刪除,剪切等,是一個靜態類;    
         Directory:操作目錄,指的是文件夾,靜態類;
         Path:對文件的目錄或者路徑進行操作,但是在這里文件的目錄或者路徑不是實際存在的,也就是是針對字符串的處理;
         Stream:文件流,在這里它是一個抽象類。
         FileStream:他是文件流;
         StreamReader和StreamWrite;
         文件類就簡單的說這幾個啦,前面我已經把他們各自常用的方法謝過啦,但是只是知道這些方法啦,文件類是我認為最不太清楚做題思想的,不知道是參數太多的問題,還是剛開始接觸對它敏感那,做起來這個感覺甚是苦惱啊,這個也需要好好地掌握啦,之前這個就沒有做熟悉啦,這是我的根本原因啦,接下來要把方法看下,具體的使用這個練習練習啦。
         哎,感覺一個過程的復習讓我知道啦自己還有哪些地方沒有掌握,我要學會反復的回顧前面學習的基礎知識啦。感覺忘記的好快,總之,這次的復習讓我再次看清楚啦自己學習的情況,同時及時的復習和練習習題可以幫助我們強化知識額,嘿嘿,好啦,今天就總結到這里啦。
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM