对象:自包含实体,用一组可识别的特性和行为来标识
:具有相同属性和功能的对象的抽象集合
实例化:创建对象过程用new来创建
构造函数:对类初始化,和类同名 无返回值 在new时调用(静态构造函数无访问修饰符和参数)
重载:方法名必须相同,参数个数 类型必须不同
(如果都相同,光返回值不同,会报错"已定义了一个名为XXX的具有相同参数类型的成员")
字段:定义在类里的private
属性:用来被外部访问的public
封装:每个对象都包含它能进行操作所需要的所有信息。因此对象不必依赖其他对象来完成自己的操作
方法和属性包装在类里,通过类的实例访问
好处1.减少耦合2.类内部实现自由修改3.类有清晰对外接口
继承:1.子类拥有父类非private的属性和方法 2.子类有自己的属性和方法,子类可以扩展父类没有的属性和方法3.子类可以重写父类的方法

继承会破坏封装,父类实现细节暴露给子类
耦合性:两个类尽管分开一方的变化会影响到另一方就是耦合性高 继承强耦合关系
多态:不同的对象可以执行相同的动作,通过他们自己的实现代码来执行
(不同的子类都可以重写父类的虚方法,通过子类具体的代码执行)
动物 animal = new 猫(); 父类 f = new 子类();
父类 虚方法virtual 子类 重写 override (返回值 访问修饰符,参数和个数必须一致)
子类override 重写父类方法后 会自动调用 子类 的方法
多态是看new的时候
Cat cat = new Cat("wu ");
Animal cat = new Cat("wu ");//效果 一样
抽象类:abstract 不能有具体实现 1.不能实例化 2.抽象方法必须被子类重写 3.只要包含抽象方法 就是抽象类   抽象类要有尽可能多的共同代码,尽可能少的数据
接口:不能实例化,不能有修饰符(public private)和构造函数,字段不能声明虚拟的或静态的    子类必须实现接口全部方法 属性
抽象类可以给出一些函数实现,接口不能包含函数实现
委托:是对函数的封装,当做给方法的特征制定一个名称  事件:委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程
事件 += new 委托(方法)//将方法和这个事件关联
sender 发送通知的对象 EventArgs:包含事件数据的类(事件触发时传递数据用的)