面向对象基础
类:
具有相同的属性和功能的对象的集合
对象:
自包含的实体,由一组可识别的特性和行为来标识。
构造方法:
对类进行初始化,无返回值, 与类同名,可重载
重载函数:
在同一类中,对函数的重写,就是在不改变原来方法的基础上,增加其功能,参数类型或个数必须不同。
属性:
属性其实可以被看成是一对方法,一个方法设置其值(即在调用属性时设置其内部的字段或引用的值),一个方法读取他的值(调用时可以得到其内部字段的值或引用)。但是对于调用它的代码来看,他是一个字段。
字段:字段存储类要满足其设计所需要的数据。
继承(三点)
子类拥有父类非Private 的属性和功能;
子类具有自己的属性和功能;
子类可以以自己的方式实现父类的功能,主要是重写父类的某些功能,注意其与重载函数的区别
多态(对父类函数的重新实现):
多态多是用在继承之间,子类以自己的方式实现父类的功能,即不同的子类可以拥有相同的操作,但各个子类要通过他们自己的代码来实现。这个父类函数主要是指父类中的抽象方法或者虚方法。
重构:对原有代码进行优化
抽象类与接口类的区别
抽象类:
抽象类不能被实例化,其中的抽象方法必须被重写(这一点是与父类中的虚方法不同的地方,需方法不一定非要重写),抽象方法必须且只能在抽象类中。类可以实现多个接口,但是只能继承一个抽象类。
抽象类应拥有尽可能多的共同代码,拥有尽可能少的数据。
接口:
某种同一行为的抽象。将隐式公共方法和属性组合起来,以封装特定功能(主要是行为,比如说通信)的一个集合。实现接口的类必须实现接口里面全部的行为和属性。
区别一:抽象类是对类的抽象,接口是对行为的抽象,也就是说接口是对类的局部行为的抽象,抽象类是对相似类对象的抽象。
区别二:接口中行为可以跨越不同的对象,即使是不同类的对象,而抽象类中的行为基本是各个子类都会有的。
区别三:抽象类是有底自上的,从对象向上抽象;而接口是预先定义的,可以不知道对象的存在,至于方法如何实现以后再说
泛型:
类型安全的,(有待补充),适合大型工程,因为他是强类型的。
委托和事件(有待补充):
委托实际上是一种方法类型,对函数的封装。可以将符合该类型的方法分配在委托上,使得方法类型安全,一旦方法分配在委托上,委托就具有与分配在其上的方法完全相同的功能。
事件是一种特殊的委托,事件是委托类型,一般是在发生其他类或对象关注的事情时,类或对象可以通过事件通知他们。
委托是一种特殊的类型,委托类型的变量用来接收签名(定义委托时对函数的要求(所谓要求,也就是参数类型和数量,返回类型)叫签名)和委托类型变量相同的函数,包括实例函数和静态函数,并且可以接收签名相同的多个函数,这也叫多播委托。
事件其实和多播委托相类似,只是多播委托可以在事件源外部触发,如在客户端触发;而事件只能在事件源触发。事件的用法就是类似于多播委托的用法。而事件实质就是一种比较特殊的委托类型变量。
例如在Form中的使用:
对函数
private void button1_Click(object sender, EventArgs e)
{
}
this.button1.Click += new System.EventHandler(this.button1_Click);
public delegate void EventHandler(object sender, EventArgs e);
,而事件Click就是一个委托类型的变量:
public event EventHandler Click;
具体步骤就是:
1、定义一个委托
public delegate void EventHandler(object sender, EventArgs e);
接收签名与此相同的函数
2、将方法this.button1_Click注册在上面的委托变量(new System.EventHandler(this.button1_Click))中,
3、定义一个委托类型的事件
public event EventHandler Click;