1. 访问修饰符
2. 设计模式(23种设计模式)
《设计模式:可复用面向对象软件的基础》
设计这个项目的一种方式
简单工厂设计模式
简单工厂最核心的部分 模拟工厂
用一个方法来模拟工厂生产笔记本的过程
这个工厂最终要制造出(返回)一个笔记本的父类
根据用户输入的品牌来创建笔记本对象
返回一个父类,但父类中装的是子类对象
之后再使用多态,可以屏蔽子类之间的差异性
3. 值类型和引用类型
值类型:int double char decimal bool enum struct
引用类型:string 数组 自定义类 集合 object 接口
值传递和引用传递
值类型在复制的时候,复制的是这个值本身
引用类型在复制的时候,复制的是这个值的引用
加了ref后 将值传递 改变成 引用传递
字符串的不变特性
4. 序列化:将对象转化为二进制
反序列化:将二进制转化为对象
作用:传输数据
1)将这个类标记为可序列化 [Serializable]
2)使用BinaryFormatter类 bf.Serialize bf.Deserialize
5. 部分类
public partial class Person
6. 密封类
public sealed class Person
密封类不能被继承 但可以继承别的类
7. 重写父类的ToString() Equals(object obj) GetHashCode()
这三个函数都是Object类的虚方法
8. 接口就是一个规范、能力
[public] interface 接口名I...able
{
接口成员
}
IFlyable fly = new 继承接口的子类
这样同样一条语句 fly.成员 就可以屏蔽不同子类对象的差异了
9. 接口的特点
1)接口不能进行实例化(其他不能实例化的有抽象类,静态类)
2)接口中的成员不允许添加访问修饰符,默认就是public
3)接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的方法)
不允许写有方法体的函数
4)接口的成员中可以包含自动属性,方法和索引器(这三种本质都是方法)
接口不能包含字段(因为字段是用来存储数据的,接口不存储数据),也没有构造函数
5)接口与接口可以继承,并且可以多继承
6)接口并不能去继承一个类,而类可以继承接口
接口只能继承于接口,而类既可以继承接口,也可以继承类
7)实现接口的子类必须实现该接口的全部成员
8)一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA
那么语法上A必须写在IA的前面
9)显式实现接口的目的:解决方法的重名问题
什么时候显式地去实现接口:当继承的接口中的方法和类本身所具有的方法同名且同参数的时候,
需要显式的实现接口
如:
void fly() --类本身所具有的方法
void IFlyable.fly(){}--接口具有的方法
10)当一个抽象类实现接口的时候,需要子类去实现接口
10总结
什么时候用虚方法来实现多态?
父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法
什么时候用抽象类来实现多态?
如果父类中没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类
什么时候用接口来实现多态?
这几个类中根本找不出来父类,但它们都有一个共同的能力,这个时候用接口
11 GUID
能帮助我们产生独一无二的编号
Guid.newGuid().ToString()