C#面向对象学习总结

T1类和对象

1. 面向对象的定义:对事物进行分析和总结,抽象出共同的特征和行为,封装成类,,再把类进行实例化。这种设计思想就叫面向对象。

2. 面向对象的优点:比较灵活、易于维护、可复用、易于扩展

3. 类:具有共同的特征和行为的一类事物的统称

4. 对象:独一无二的,具体指哪一个

T2封装

1. 字段封装成属性:3个步骤

第一步:将字段的public改成private 例如:private int age;

第二步:将字段首字母变成大写   例如:public int Age;

第三步:添加get和set访问器,get用来读取值,set用来设置值得

Private int Age{

get { return age; }

set

   {

if (value <0 || value >130)

{

      age = 18;

     }

    }

}

(注:prop按两次tab可直接生成public int MyProperty { get; set;})

2.方法重载:方法名相同,参数的类型不同,或者参数的个数不同

  方法重载的作用:少取方法名

3. 构造方法是给属性赋初始值

T3集合类

1. 集合:用来保存数据的。集合可以自动扩容,比数组更灵活

2. Array集合可以保存任何类型的数据(也包含对象),例如:int、string、student

3. ArrayList集合:

添加数据用Add()

删除某个下标的数据:RemoveAt(index),

删除某个元素用:Remove(list[0]),

清空整个集合:Clear();

元素的实际个数:list.Count

元素的容量:Capacity

前三章复习

输出方法:

 Console.WriteLine($"姓名:{c1.Name};年龄:{c1.Age};地址:{c1.Address}");

构造函数

在程序中,所有的类都默认有一个无参的构造函数,但是一旦使用了有参的构造函数,那么就需要手动加上无参的构造函数

集合:

变量:可变的量

数组:存储同一类型的数据,致命缺陷是长度固定

集合:长度是可可变的(动态改变),可同时存储不同类型的数据 ArrayList,需要导入命名空间using System.Collections;

字典:key-value键值对

1、prop按两次tab可直接生成构造方法 public int MyProperty { get; set;})

2、prop按两次tab可直接生成私有的构造函数 

private int myVar;

        public int MyProperty

        {

            get { return myVar; }

            set { myVar = value; }

        }

3、cw按两次tab可直接生成 Console.WriteLine(); 

(1) 输出方式可以用占位符Console.WriteLine("{0}{1}",值1,值2);

(2) 也可用Console.WriteLine($"{值1},{值2}");

4、多行编辑:

(1)按住 Alt 键,使用鼠标拖选

(2)按住 Alt + Shift 键,再按上/下/左/右方向键选择

(3)按住 Ctrl + Alt 键,点击或选择要插入或编辑的位置

3、匹配相同单词并编辑:先选择要编辑的单词或字符,再按一下 Alt + Shift + ;

4、复制行:Ctrl + D

5、注释选定行:Ctrl + K,Ctrl + C(单行注释)Ctrl +Shift+?(多行注释);Ctrl+C(注释)

6、取消选定行的注释:Ctrl + K+ U

7、删除光标右侧的所有字:Ctrl + Delete

8、删除当前行:Ctrl+L

9、展开或关闭当前的代码:Ctrl+M+M

10、切换打开的窗口,即切换各个文件:ctrl+tab

T4 泛型

1. 重载:在同一个类中,方法名相同,参数类型或者个数不同,和返回值类型没有任何关系。

T5类的继承

1、继承是子类可以沿用父类的某些特征和行为,子承父业

2、Public 类名

Public 类名:子类名

3、this和base

this调用本类中的成员属性或者方法

base调用父类中的成员属性或者方法

T6多态

1、方法的隐藏调用的方法,主要是看定义类的等号的左边,也就是引用(在Person p=new Doctor();  Person 类中的方法)

2、方法的重写调用的方法,主要是看定义类的等号的右边,也就是引用(在Person p=new Doctor();  Doctor类中的方法)

即:若为方法的重写,调用哪个方法取决与创建对象,若为方法隐藏,调用哪个方法取决与所使用的引用。

3、虚方法既能隐藏又能重写

4、通过sealed修饰的类称之为密封类,其方法被称为密封方法,由于密封类不能被继承,所有密封类中的方法无法被子类重写,因此,类中的方法不能定义为虚方法。父类使用virtual定义虚方法,子类使用override定义虚方法

5、sealed修饰方法时只能与override一起使用,防止重写的方法再次被重写

6、当设置方法的参数为父类类型时,可接受父类对象以及所有子类对象

7、重载和重写的区别:

重载:在同一个类中,方法名相同,参数类型或者个数不同,和返回值类型没有任何关系。

重写:在父子类中,方法名、参数类型、参数个数、返回值类型要完全相同,并且子类访问修饰符不能低于父类。

T7类的抽象

1、抽象类:不可以包含任何的抽象方法,但是含有抽象方法的类必须定义为抽象类;抽象类不允许有方法体;子类继承于抽象类时必须重写抽象类中的所有的抽象方法,除非子类也是抽象类;抽象类不允许直接实例化,只能实例化其非抽象子类对象。

2、接口分为自定义接口和开发平台提供的接口,若需要对自定义类的对象进行排序,那么该类必须实现IComparable接口

3、自定义接口:

interface 接口名{}

自定义接口要注意:

(1)接口名一般使用大写字母“I”开头,表明它是接口类型

(2)接口可包含方法、属性,但不能包括字段

(3)接口中定义的成员不允许有具体实现,即不能有方法体{}

(4)接口中的成员不允许加任何访问修饰符

(5)接口里的方法在使用接口是必须重写,但是不需要使用override关键字

4、开发平台提供的接口:调用方法: int CompareTo(object obj);返回值得含义为值含义小于零此实例按排序在obj前面,大于零此实例按排序顺序在obj后面,也就是说如果是小于零,那就当前实例要小于object对象,那么如果大于零的话,那么也就是说当前这个实例是大于object对象,即实现比较规则。

5、抽象类体现了一种继承关系;接口则不然,仅仅是实现和被实现的关系。

6、抽象类与接口的运用:在c#中,一个类可以在继承其他类的同时实现多个接口,但是书写时类名在前,接口名在后。

7、在class关键字前添加abstract关键字将类变为抽象类

8、抽象类的特征:

(1)抽象类里可以没有任何属性方法,也可以有具体的方法体{};抽象类不一定要有抽象方法,但是抽象方法必须在抽象类里

(2)抽象类中的抽象方法在子类中必须用override关键字重写

(3)抽象方法不能有方法体{}

(4)抽象类不能通过new关键字实例化对象

9、抽象类一般用于有继承关系的场合,互相之间有一定联系

T8文件操作

1、添加打开文件对话框事件

OpenFileDialog常用属性

FileName:存放的是选中文件的路经

Filter:用来筛选文件的方式,格式是:文本文件|*.txt|所有文件|*.*

FilterIndex:默认选中第几个筛选器

InitialDirectory:打开选择文件对话框默认定位的文件夹位置

Multiselect:多选

2、浏览文件对话框常用属性

Description:对话框左上角提示文字

SelectedPath:存放选中文件夹的路经

RootFolder:对话框打开默认定位地址

ShowNewFolderButton:是否显示新建文件夹按钮

3、文件常用操作方法(要调用这些方法,需要引入命名空间using System.IO;)

使用File.方法名调用,例如:File.Exists(path);

Exists(文件路经):用于检测指定文件是否存在

Copy(源文件路经,复制到的路经):将现有文件复制到新文件中

Move(源文件路经,复制到的路经):将指定文件移动到新位置

Delete(文件路经):删除指定文件

4、文件夹常用操作方法(要调用这些方法,需要引入命名空间using System.IO;)

使用Directory.方法名调用,例如:Directory.Exists(path);

Exists(文件路经):用于检测指定文件夹是否存在

Directory.Move(需移动的文件夹路径,要移动到的文件夹路径):将指定文件移动到新位置

CreateDirectory(路径):在指定路径创建所有目录和子目录

Directory.Delete(路径):删除文件夹,但是文件夹必须为空否则不能删除

Directory.Delete(路径,true):删除文件夹和文件夹里面的所有内容

5、添加创建文件夹事件

   (1)选择需要创建文件夹的目录

   (2)输入创建文件夹名称

   (3)调用Directory.CreateDirectory(路径)

T8 文件操作(二)

文件概念:文件是在各种媒介上存储的数据的有序集合

流的概念:流是一种向存储器读取和写入字节的方式,也是进行数据读写操作的基本对象

文件读写:

1 常用的类 --- FileStream(文件流)、StreamReader(文件读取器)、StreamWriter(文件写入器)

2 文件读写基本步骤

//1 创建文件流

FileStream fs=new FileStream("Path",FileMode.枚举值,FileAccess.枚举值);

//2 创建读写器

StreamReader sr=new StreamReader();

StreamWriter sw=new StreamWriter();

//3 执行读写操作

sr.ReadToEnd(fs);

sw.Write(fs,object)

//4 关闭读写器、关闭文件流

sr.Close();

sw.Close();

fs.Close();

FileMode的枚举值:

CreateNew 创建新文件夹,如果已存在则引发异常

Create 创建新文件夹,如果已存在则覆盖

Open 打开文件,如文件不存在则引发异常

OpenOrCreate 打开文件,如文件不存在则创建新文件夹

Append 打开文件并查找文件尾,如果文件不存在,则创建新文件

Truncate 打开当前文件并清除内容,如果文件不存在则引发异常

FileAccess的枚举值:

Read 对文件进行只读访问

Write 对文件进行只写操作

ReadWrite 对文件进行读写访问

StreamReader的常用方法:

read() 读取输入流

ReadLine() 读取当前流中的一行字符,返回字符串

ReadToEnd() 读取重头到尾的所有字符,返回字符串

Colse() 关闭读取器,释放资源

StreamWriter的常用方法:

Write() 将数据写入流

WriteLine() 将行结束符之前的数据写入流

Colse() 关闭StreamWriter对象和基础流

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

润小仙女

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值