我们复习.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;
         文件类就简单的说这几个啦,前面我已经把他们各自常用的方法谢过啦,但是只是知道这些方法啦,文件类是我认为最不太清楚做题思想的,不知道是参数太多的问题,还是刚开始接触对它敏感那,做起来这个感觉甚是苦恼啊,这个也需要好好地掌握啦,之前这个就没有做熟悉啦,这是我的根本原因啦,接下来要把方法看下,具体的使用这个练习练习啦。
         哎,感觉一个过程的复习让我知道啦自己还有哪些地方没有掌握,我要学会反复的回顾前面学习的基础知识啦。感觉忘记的好快,总之,这次的复习让我再次看清楚啦自己学习的情况,同时及时的复习和练习习题可以帮助我们强化知识额,嘿嘿,好啦,今天就总结到这里啦。
 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。