1.虚函数(重写父类中的方法)
2.抽象类
1.为什么要有抽象类
比如我们讲的怪物可能都有一技能的,也就是说都会有一个一技能攻击的方法,但是每个怪物的一技能都不一样,有时候在编写项目的时候可能忘记编写子类中一技能的方法,我们可以定义一个抽象父类,抽象类是一个不完整的模板,因为里面有抽象函数,抽象函数可以理解为一个没有函数体的函数,那么我们在使用继承的时候,会提示你编写攻击的函数,否则就会报错,这样可以更加规范我们代码的编写。
定义一个派生类继承抽象类中的方法,这时候会提示你要重写min方法
直接点击提示,实现抽象类
3.常见访问修饰符的了解
- public 访问的最高权限,允许在同个项目或不同的项目中被访问
- private 只允许在类或结构中被访问
- internal 只允许在同个项目中被访问
- protected 只允许在同一个类或结构或者此类的派生类中被访问
4.密封类
当我们创建的类不想被继承的时候,我们可以在类前面加sealed修饰符表示该类无法被继承
14.其他修饰符
1.static 静态和非静态的区别:
- 被static修饰的是静态成员,没有被static修饰的是非静态成员(实例成员)
- 在静态类中可以有静态成员,也可以有非静态成员,但是静态类中只能有静态成员
- 在类中,静态方法要调用的话只能通过类名.方法名,不能通过对象名.方法名调用
- 在静态函数中只能访问静态成员的数据,不能访问非静态成员(实例成员)的数据
- 实例函数中既可以使用静态成员也可以使用实例成员
2.readonly 只能在声明和构造函数中初始化赋值,在其他地方不能修改其值,只能被读取,不能被修改
5.练习
6.接口
1.为什么需要使用接口
接口相当于是一个规范,接口可以实现多继承,接口指定一组没有函数体的函数成员,也就是说只提供了一些没有函数体的函数,具体怎么实现还要我们在自己的类中去实现。
2.接口的使用
- 接口中包含很多没有实现的函数成员,每个成员不需要设置访问修饰符,默认都是 public公开的
- 接口中可以放方法,属性(只能用自动属性就是简写模式),索引器,这些的本质其实还是函数
- 因为接口中的函数都是没有实现的,所以接口是不能实例化的
- 接口可以被类继承,接口可以多继承其他接口
区别
调用接口中的Eat
- 显示实现接口 我们在开发中如果自己的类中有和接口中同名的函数,那么在继承接口的时候,类中的同名函数会被认为是实现接口中的函数,但是我们就想区分出来,另外去实现接口中的函数怎么办呢?
7.File类处理小文件的读写
1.逐行读取文件中的信息到字符串数组中
填写文件路径,使用相对路径文件是相对程序集的目录
2.读取文件中的信息到字符串
3.向文件中写入信息{覆盖形式}
覆盖后的文件
4.向文件写入信息(追加的形式)
8.泛型类
1.为什么要泛型
我们很多时候在往方法传参数都是固定某种类型的数据,但是很多时候我们数据类型可能是多种的,比如你比较两个数的大小有可能是小数也有可能是整数(这里只是举例子),那么你要对不同数据类型进行操作就要使用到泛型
2.如何定义泛型
在class后<泛型名>,当我们创建对象的时候往<>中填写具体类型的名称这样我们就知道传进来的数据是什么类型