今天是我们复习前面学习的第三天,也是在今天我们结束了复习。之前上学时间感觉知识全是生僻的,在生活中很少用到,因此喜欢重复的记忆,而现在学习的知识全是现在乃至未来,将是每天我们使用的,所以就感觉没必要重复记忆啦,只要我记得知识点的存在然后会想起来具体的内容的,可是今天的复习我发现这样的做法还是不对的,也可能只是刚开始啦,太多东西都是硬性的,因此我想通过这篇文章来重新捡起来我忘记的,嘿嘿。下面就来说下具体容易忘记的和做起来题还是比较生硬的吧。

一.构造函数

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

我们复习.Net的这些日子里的更多相关文章

  1. 在没有DOM操作的日子里,我是怎么熬过来的(上)

    前言 在我动笔写这篇文章的时候,我刚刚从我的项目中删除了最后一行JQuery代码.至于我为何要这么做,请听闰土娓娓道来.前几年我还在想,假如有一天,前端世界里不能再直接操作dom了,我该怎么办?没想到 ...

  2. 在没有DOM操作的日子里,我是怎么熬过来的(终结篇)

    前言 在我写终结篇的日子里,Vue版本稳定在2.9.1.当我摸清Vue的脉络之后,以一个爬坑无数的亲历者的身份,谈谈我在MVVM时代里遇到的那些事儿. 接下来,正文从这开始~ 好多童鞋学习Vue都有灯 ...

  3. 运维MES的日子里

    可以看下<工业软件国内与国外差距,越来越小还是越来越大>.<MES技术国内现状与未来发展趋势>及<国际主要MES厂商>,总结来说中国工业是进步的,工业软件也是进步的 ...

  4. 在没有DOM操作的日子里,我是怎么熬过来的(中)

    前言 继上篇推送之后,在掘金.segmentfault.简书.博客园等平台上迅速收到了不俗的反馈,大部分网友都留言说感同身受,还有不少网友追问中篇何时更新.于是,闰土顺应呼声,在这个凛冽的寒冬早晨,将 ...

  5. 与linux相处的日子里

    在前几天装了一下linux操作系统,并安装了几个经常使用的工具.如今就谈谈我的感受吧! 对一个连linux几个字母都不会拼写的人来说.让我參与这个工作可谓是:"太残忍啦!"当然这在 ...

  6. DTD复习笔记(复习资料为菜鸟教程里的DTD教程)

    DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 为什么使用 DTD? 通过 DTD,您的每一个 XML 文件均可携带 ...

  7. XML复习笔记(复习资料为菜鸟教程里的XML教程)

    XML 指可扩展标记语言(eXtensible Markup Language) XML 的设计宗旨是传输数据,而不是显示数据. XML 标签没有被预定义.您需要自行定义标签. XML 被设计为具有自 ...

  8. javase基础复习攻略《十》

    按照计划本篇为大家总结JAVA的网络编程,什么叫网络编程呢?网络编程!=网站编程,对于这一点大家一定要注意,很多小朋友都曾经这么认为.既然谈到网络编程,咱们先了解一下网络的基础知识,什么是计算机网络? ...

  9. 【C#复习总结】垃圾回收机制(GC)1

    摘要:今天我们漫谈C#中的垃圾回收机制,本文将从垃圾回收机制的原理讲起,希望对大家有所帮助. GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久.早在1958年,由 ...

随机推荐

  1. ld,连接器

    连接器的功能,是将一个可执行程序所需的目标文件和库文件最终整合为一体.一个程序通常包含传统的三个段,.test, .data, .bss段.连接器的功能就是将各个目标文件个库文件中的三个段进行合并. ...

  2. 【WPF】使用Popup控件做浮窗/提示框

    需求:当鼠标移入某个区域时,弹出一个浮窗,以便用户进行下一步操作. 效果如下图: 当鼠标移入左上角的[多选显示]框内,出现下面的浮窗(悬浮在原UI之上).当在浮窗外点击鼠标左键时,隐藏该浮窗. 由于该 ...

  3. JAVA String.format 方法使用介绍<转>

    在JDK1.5中,String类增加了一个非常有用的静态函数format(String  format, Objece...  argues),可以将各类数据格式化为字符串并输出.其中format参数 ...

  4. 分享一下自己写的Python 3的各种PDF文档【花了半年时间那】

    这些文档花了我半年的时间去整理.因为是第一次进行整理,希望帮助后来者少走弯路.毕竟是第一次整理.哪些地方不到位,希望大家和我练习,我们一起把它做好,以下就直接给出下载地址了,都是免积分的下载奥.因此. ...

  5. LintCode - Copy List with Random Pointer

    LintCode - Copy List with Random Pointer LintCode - Copy List with Random Pointer Web Link Descripti ...

  6. iOS边练边学--UIScrollView的属性简单使用,代理的简单介绍以及内容缩放

    一.什么是UIScrollView *移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也是相当有限 *当展示的内容较多,超出一个屏幕时,用户可通过滚动收拾来查看屏幕以外的内容 *普通的UI ...

  7. DataGridView使用技巧八:设置单元格的ToolTip

    ToolTip属性用来设置当鼠标移动到单元格上面时的提示内容. DataGridView.ShowCellToolTips=True的情况下,单元格的ToolTip可以表示出来.对于单元格窄小,无法完 ...

  8. 判断list为空的条件

    if(list!=null&&!list.isEmpty()){                    hql.append(" and (status = ? or sta ...

  9. r语言 包说明

    [在实际工作中,每个数据科学项目各不相同,但基本都遵循一定的通用流程.具体如下]   [下面列出每个步骤最有用的一些R包] 1.数据导入以下R包主要用于数据导入和保存数据:feather:一种快速,轻 ...

  10. 从jQuery谈库与框架的设计之优劣

    jQuery是业内知名的javascript框架,它的实现和设计可以说代表了javascript界最高的水平,本文试从四个方面来以jQuery为例总结库与框架设计的原则和优劣判断. 解决问题 首先请看 ...