C# 面向对象系列笔记(四)

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

Normal
0
false

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

第四天

1.泛型集合

1>ArrayList--->List<T>     集合

-àlist.Add() //添加数据

-àlist.AddRange(new int[]{1,2,3,4,5,7,8,9});//添加集合数据

-àlist.Chera(); //清除所有数据

-àlist.Reverse(); //翻转;

-àlist.Sort();  //升序排列

-àIist.Insert(0,100);  //根据索引添加数据

-àlist.Insert(0,new int[]{1,2,3,4,5.67});

-àlist.Remove(100);   //写谁 谁删除

-àlist.RemoveAt(5);   //根据索引删除

-àlist.RemoveRange(1,10);  //删除一段;1,开始索引,10: 移除的范围

-àlist.RemoveAll(n=>n>3);   //lamda表达式

2>Hashtable--->Dictionary<Tkey,Tvalue>  键值对集合

遍历方式:

// 循环输出键值对集合

foreach (var item in dic.Keys)

{

Console.WriteLine("键{0}----值{1}",item,dic[item]);

}

//更加洋气的遍历方式

foreach (KeyValuePair<string, int> kvp in dic)

{

Console.WriteLine("键{0}---值{1}", kvp.Key, kvp.Value);

}

2.File读写数据(上接昨天讲的File)

1> ReadAllBytes():  以字节的形式读取文件

eg:

byte[] buffer = File.ReadAllBytes(@"C:\Users\SpringRain\Desktop\0310.Net基础班第十二天.txt");

//字节数组---->字符串 GetString() ToString()

//32 45 67 32 45 67 我爱你解码

string str = Encoding.Default.GetString(buffer);

Console.WriteLine(str);

2> WriteAllBytes() 以字节的方式写入

eg:

string str = "顶楼上  ";

//字符串--->转码字节数组

byte[] buffer=   Encoding.Default.GetBytes(str);

File.WriteAllBytes(@"C:\Users\SpringRain\Desktop\123.txt", buffer);

Console.WriteLine("写入成功");

3> 对多媒体文件实现复制粘贴的操作(File复制粘贴是一次性全部复制/粘贴,太消耗内存,以后可以用 数据流的方法)

eg:

//首先使用ReadAllBytes将要复制的文件读取出来

byte[] buffer = File.ReadAllBytes(@"C:\Users\SpringRain\Desktop\newnew.mp4");

//使用WriteAllBytes将字节数组写入到指定的位置          File.WriteAllBytes(@"C:\Users\SpringRain\Desktop\new22222.mp4", buffer);

Console.WriteLine("复制成功");

4> ReadAllLines()  WritrAllLines()  //读入或写入每行数据,返回一个数组类型

eg:

string[] contents = File.ReadAllLines(@"C:\Users\SpringRain\Desktop\0310.Net基础班第十二天.txt", Encoding.Default);  //读

File.WriteAllLines(@"C:\Users\SpringRain\Desktop\new222.txt", newstring[] { "张三", "李四", "王五", "赵六" });

Console.WriteLine("写入成功");  //写

5> ReadAllText() WriteAllText()   //读入或写入整个文档,返回字符串类型

eg:

string content = File.ReadAllText(@"C:\Users\SpringRain\Desktop\new222.txt");  //读

Console.WriteLine(content);

File.WriteAllText(@"C:\Users\SpringRain\Desktop\new222.txt", "覆盖你们");   //写

Console.WriteLine("写入成功");

3.Directory类  (操作文件夹的类)

1> Directory.Exists():查询文件夹是否存在

2> Directory.CreateDirectory() :创建了一个文件夹

eg:

if (!Directory.Exists(@"C:\Users\SpringRain\Desktop\new"))

{

//如果没有我就创建一个

Directory.CreateDirectory(@"C:\Users\SpringRain\Desktop\new");

Console.WriteLine("创建成功");

}

else

{

//如果有了我就往里面追加100个文件夹

for (int i = 0; i < 100; i++)

{

Directory.CreateDirectory(@"C:\Users\SpringRain\Desktop\new\" + i);

}

Console.WriteLine("追加成功");

}

3> Directory.Delete()  //删除文件夹

eg:

Directory.Delete(@"C:\Users\SpringRain\Desktop\new", true);

Console.WriteLine("文件夹删除成功");

Console.ReadKey();

4> Directory.Move()  //剪切文件夹(不能越盘剪切)

eg:

Directory.Move(@"D:\新来哒", @"D:\1111111111111\newnewnew");

Console.WriteLine("剪切成功");

5> Directory.GetFiles()   //返回文件夹里文件指定类型绝对路径

4 .多态   (里包含:虚方法,抽象类,接口)

1> 定义:我们使用多态的目的就是为了让一个对象能够表现出多种状态(类型)

2> 使用虚方法实现多态:

---将父类的函数名称,使用关键字virtual进行标记

---将子类的每个函数一次标记为override,表示重写父类的虚函数;

---如果没有virtual和override,那么父类无论如何都不会去执行子类的函数

---如果我们将父类的函数标记为virtual,那么意味着这个函数可以被子类重写一遍,如果父类装的是子类的对象,则执行子类中重写父类的函数

---ToString()就是object类中的一个虚方法。

5. 抽象类

1> 抽象成员必须标记为abstract,并且不能有任何方法来实现;

2> 抽象成员必须在抽象类中。

3> 抽象类不能被实例化

4> 子类继承抽象类后,必须把父类中的所有抽象成员都重写(除非子类也是一个抽象类,则可以不重写)

5> 抽象类的访问修饰符不能是private

6> 在抽象类中可以包含实实例程成员,并且抽象类中的实例成员可以不被子类实现

7> 抽象类是有构造函数的,虽然不能被实例化。(为子类提供继承)

8> 如果父类的抽象方法中有参数,那么,继承这个抽象类的子类在重写父类的方法时候必须传入对应的参数。

9> 如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候,也必须传入返回值

注意 :   

如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑讲父类定义成一个普通类,用虚方法来实现多态

如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

第四天

1.泛型集合

1>ArrayList--->List<T>     集合

-àlist.Add() //添加数据

-àlist.AddRange(new int[]{1,2,3,4,5,7,8,9});//添加集合数据

-àlist.Chera(); //清除所有数据

-àlist.Reverse(); //翻转;

-àlist.Sort();  //升序排列

-àIist.Insert(0,100);  //根据索引添加数据

-àlist.Insert(0,new int[]{1,2,3,4,5.67});

-àlist.Remove(100);   //写谁 谁删除

-àlist.RemoveAt(5);   //根据索引删除

-àlist.RemoveRange(1,10);  //删除一段;1,开始索引,10: 移除的范围

-àlist.RemoveAll(n=>n>3);   //lamda表达式

2>Hashtable--->Dictionary<Tkey,Tvalue>  键值对集合

遍历方式:

// 循环输出键值对集合

foreach (var item in dic.Keys)

{

Console.WriteLine("键{0}----值{1}",item,dic[item]);

}

//更加洋气的遍历方式

foreach (KeyValuePair<string, int> kvp in dic)

{

Console.WriteLine("键{0}---值{1}", kvp.Key, kvp.Value);

}

2.File读写数据(上接昨天讲的File)

1> ReadAllBytes():  以字节的形式读取文件

eg:

byte[] buffer = File.ReadAllBytes(@"C:\Users\SpringRain\Desktop\0310.Net基础班第十二天.txt");

//字节数组---->字符串 GetString() ToString()

//32 45 67 32 45 67 我爱你解码

string str = Encoding.Default.GetString(buffer);

Console.WriteLine(str);

2> WriteAllBytes() 以字节的方式写入

eg:

string str = "顶楼上  ";

//字符串--->转码字节数组

byte[] buffer=   Encoding.Default.GetBytes(str);

File.WriteAllBytes(@"C:\Users\SpringRain\Desktop\123.txt", buffer);

Console.WriteLine("写入成功");

3> 对多媒体文件实现复制粘贴的操作(File复制粘贴是一次性全部复制/粘贴,太消耗内存,以后可以用 数据流的方法)

eg:

//首先使用ReadAllBytes将要复制的文件读取出来

byte[] buffer = File.ReadAllBytes(@"C:\Users\SpringRain\Desktop\newnew.mp4");

//使用WriteAllBytes将字节数组写入到指定的位置          File.WriteAllBytes(@"C:\Users\SpringRain\Desktop\new22222.mp4", buffer);

Console.WriteLine("复制成功");

4> ReadAllLines()  WritrAllLines()  //读入或写入每行数据,返回一个数组类型

eg:

string[] contents = File.ReadAllLines(@"C:\Users\SpringRain\Desktop\0310.Net基础班第十二天.txt", Encoding.Default);  //读

File.WriteAllLines(@"C:\Users\SpringRain\Desktop\new222.txt", newstring[] { "张三", "李四", "王五", "赵六" });

Console.WriteLine("写入成功");  //写

5> ReadAllText() WriteAllText()   //读入或写入整个文档,返回字符串类型

eg:

string content = File.ReadAllText(@"C:\Users\SpringRain\Desktop\new222.txt");  //读

Console.WriteLine(content);

File.WriteAllText(@"C:\Users\SpringRain\Desktop\new222.txt", "覆盖你们");   //写

Console.WriteLine("写入成功");

3.Directory类  (操作文件夹的类)

1> Directory.Exists():查询文件夹是否存在

2> Directory.CreateDirectory() :创建了一个文件夹

eg:

if (!Directory.Exists(@"C:\Users\SpringRain\Desktop\new"))

{

//如果没有我就创建一个

Directory.CreateDirectory(@"C:\Users\SpringRain\Desktop\new");

Console.WriteLine("创建成功");

}

else

{

//如果有了我就往里面追加100个文件夹

for (int i = 0; i < 100; i++)

{

Directory.CreateDirectory(@"C:\Users\SpringRain\Desktop\new\" + i);

}

Console.WriteLine("追加成功");

}

3> Directory.Delete()  //删除文件夹

eg:

Directory.Delete(@"C:\Users\SpringRain\Desktop\new", true);

Console.WriteLine("文件夹删除成功");

Console.ReadKey();

4> Directory.Move()  //剪切文件夹(不能越盘剪切)

eg:

Directory.Move(@"D:\新来哒", @"D:\1111111111111\newnewnew");

Console.WriteLine("剪切成功");

5> Directory.GetFiles()   //返回文件夹里文件指定类型绝对路径

4 .多态   (里包含:虚方法,抽象类,接口)

1> 定义:我们使用多态的目的就是为了让一个对象能够表现出多种状态(类型)

2> 使用虚方法实现多态:

---将父类的函数名称,使用关键字virtual进行标记

---将子类的每个函数一次标记为override,表示重写父类的虚函数;

---如果没有virtual和override,那么父类无论如何都不会去执行子类的函数

---如果我们将父类的函数标记为virtual,那么意味着这个函数可以被子类重写一遍,如果父类装的是子类的对象,则执行子类中重写父类的函数

---ToString()就是object类中的一个虚方法。

5. 抽象类

1> 抽象成员必须标记为abstract,并且不能有任何方法来实现;

2> 抽象成员必须在抽象类中。

3> 抽象类不能被实例化

4> 子类继承抽象类后,必须把父类中的所有抽象成员都重写(除非子类也是一个抽象类,则可以不重写)

5> 抽象类的访问修饰符不能是private

6> 在抽象类中可以包含实实例程成员,并且抽象类中的实例成员可以不被子类实现

7> 抽象类是有构造函数的,虽然不能被实例化。(为子类提供继承)

8> 如果父类的抽象方法中有参数,那么,继承这个抽象类的子类在重写父类的方法时候必须传入对应的参数。

9> 如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候,也必须传入返回值

注意 :   

如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑讲父类定义成一个普通类,用虚方法来实现多态

如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类

Normal
0
false

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

时间: 2024-10-04 22:57:56

C# 面向对象系列笔记(四)的相关文章

javascript面向对象系列第四篇——选项卡的实现

前面的话 面向对象的应用并非只是读几本书那么容易,需要有大量的工程实践做基础才能真正理解并学会使用它.本文将用面向对象的技术来制作一个简单的选项卡 图示说明 由图示结果看到,这是一个非常简单的选项卡.三个控制按钮利用点击事件分别控制三张不同的选项卡.选项卡用文字和背景颜色区分,控制按钮用轮廓outline区分 HTML代码 [1]使用行间样式来引入CSS的扩展性不高,需要根据实际情况谨慎使用 [2]在a标签中使用javascript:;来阻止默认的页面跳转行为 [3]给最外层div元素设置id属

C# 面向对象系列笔记(五) 完结

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; ms

C# 面向对象系列笔记(三)

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {

C# 面向对象系列笔记(二)

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {

前端学PHP之面向对象系列第四篇-----关键字

public public表示公有,它具有最大的访问权限,被定义为公有的类成员可以在任何地方被访问 如果属性用 var 定义,则被视为公有,如果方法没有设置关键字,则该方法默认为公有 <?php class demo{ public $public = 1; function test($var){ echo "{$var}000"; } } $d1 = new demo; $d1->test($d1->public);//1000 ?> protected p

环境搭建系列笔记-目录

计划出个系列笔记,写一下如何搭建MySQL集群.RabbitMQ集群.Redis集群.Zookeeper集群.nginx.tomcat啥的. 先定个小目标,列个目录,然后搞出来这个系列. 大家有什么建议,比如想先看哪个?想让我写得多详细?想让我提供什么资源? 系列一:系统安装之centos 6.5安装与配置 系列二:准备工作之Java环境安装 系列三:数据为先之MySQL读写集群搭建 系列四:谈分布式之RabbitMQ集群搭建 系列五:谈分布式之Zookeeper集群搭建 系列六:分布缓存之Re

Java系列笔记 - JVM监控与调优

光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM监控与调优主要的着眼点在于如何配置.如何监控.如何优化3点上.下面就将针对这3点进行学习. (如果您对Java的内存区域划分和内存回收机制尚不明确,那在阅读本文前,请先阅读我的前一篇博客<Java系列笔记(3) - Java 内存区域和GC机制>,在该博客中,详细叙述了Java HotSpot虚拟机(Sun/Oracle JDK系列默认的虚拟机)的内存分配和垃圾回收机制.

Java系列笔记 - 线程

1,线程原理和概念 当代操作系统,大多数都支持多任务处理.对于多任务的处理,有两个常见的概念:进程和线程.      进程是操作系统分配资源的单位,这里的资源包括CPU.内存.IO.磁盘等等设备,进程之间切换时,操作系统需要分配和回收这些资源,所以其开销相对较大(远大于线程切换):      线程是CPU分配时间的单位,理论上,每个进程至少包含一个线程,每个线程都寄托在一个进程中.一个线程相当于是一个进程在内存中的某个代码段,多个线程在切换时,CPU会根据其优先级和相互关系分配时间片.除时间切换

Java系列笔记(1) - Java 类加载与初始化

目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个Class对象,存储在.class文件中,JVM使用类加载器(Class Loader)来加载类的字节码文件(.class),类加载器实质上是一条类加载器链,一般的,我们只会用到一个原生的类加载器,它只加载Java API等可信类,通常只是在本地磁盘中加载,这些类一般就够我们使用了.如果我们需要从远