.NET基础第十三天


一、C#中的访问修饰符(5个,默认是internal)
public: 公开的,公共的,所有对象都可以访问
private: 私有的,只能在当前类(对象)的内部访问
protected: 受保护的,子类也可以访问,只能在当前类的内部以及该类的子类中访问(多用于继承)
internal: 只能在当前程序集中访问,在同一个项目中internal和public的权限是一样的
protected internal: protected+internal 访问限于当前程序集或派生自包含类的类型。
1) 能够修饰类的访问修饰符只有两个:public 和 internal , 类前不写默认就是internal
2) 可访问性不一致: 子类的访问权限不能高于父类的访问权限,会暴露父类的成员
二、设计模式: 设计这个项目的一种方式
简单工厂设计模式
***香草的补充:简单工厂设计模式,是工厂设计模式的简化版,如果子类很多,会出现子类数量爆炸的问题,实际上还有工厂设计模式和抽象工厂设计模式

三、值传递和引用传递

值类型:int double char decimal bool enum struct
引用类型:string 数组 自定义类 集合 object 接口
值类型在复制的时候,传递的是这个值的本身(拷贝值);引用类型在传递的时候,传递的是对这个对象的引用(类似于C中的指针),实际上共用一块内存空间

ref的作用 相当于传递实参的地址给了形参 此时形参和实参共用一块内存

四、序列化与反序列化(BinaryFormatter类)
1. 序列化:将对象转换为二进制
2. 反序列化:将二进制转换为对象
3. 作用:传输数据。
五、部分类和密封类
partial部分类:允许一个类出现多个不同的部分,共同构成一个类,可以共享成员
sealed密封类(类似于Java中的final关键字):不能够被其他类继承,但是可以继承于其他类
六、接口(重点)※※※
语法:
○ 接口是一种规范。
○ 只要一个类继承了一个接口,则这个类就必须实现这个接口中所有的成员
○ 为了多态,接口不能被实例化,也就是说,接口不能new(不能创建对象)
○ 接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符为public,不能修改(默认为public)
○ 接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)
○ 接口中能有方法、属性、索引器、事件,自动属性(在接口中实际上是没有方法体的get和set方法),不能有字段和构造函数
○ 接口之间可以继承,并且可以多继承
○ 接口并不能去实现一个类,而类可以实现接口(接口只能继承于接口,而类既可以继承接口,也可以继承类)
○ 实现接口的子类必须实现该接口的全部成员
○ 一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上写子类继承时,A必须写在IA的前面 即 class MyClass : A , IA {} 因为类是单继承的
○ 实现接口的目的,就是解决方法中的重名问题
○ 什么时候显式的去实现接口:当继承的接口中的方法和参数一模一样的时候,需要显式的去实现接口
○ 当一个抽象类实现接口的时候,需要子类去实现接口