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

     

    我是小白,新建立了一个的群:461431726,希望在这里和大家一起交流,共同学习。前端的话建议加群:646564351,谢谢
  • 相关阅读:
    Dart语言简介
    Flutter简介
    Flutter之环境配置详解for mac版本
    mac 安卓生成证书(uniapp项目安卓证书申请)
    IOS开发者账号申请流程以及开发证书与配置文件的使用
    解读typescript中 super关键字的用法
    解决Vue编译和打包时频繁内存溢出情况CALL_AND_RETRY_LAST Allocation failed
    JS pc端和移动端共同实现复制到剪贴板功能实现
    Web前端接入人机识别验证码---腾讯防水墙
    Unity3D Demo项目开发记录
  • 原文地址:https://www.cnblogs.com/dyxd/p/4143156.html
Copyright © 2011-2022 走看看