首先我们先了解一下抽象的意思。我不讨论理论意义上对于抽象的名词解释,我只通过我的理解来描述。
1int i = 7;
这行代码非常非常地简单,但就蕴含着抽象。抽象了什么呢?int抽象了一个4个字节的空间,7抽象了两进制111。1public class Car
2{
3
4}
5
6public class Warehouse
7{
8
9}
2{
3
4}
5
6public class Warehouse
7{
8
9}
看上面的代码,如果你对单词的理解没有歧义的话,那么也许就能在你的大脑中映射出汽车和仓库。瞧,这就是抽象的意义。封装内部的具体执行细节。
所以我们先记住第一点:
抽象指的是类(Class)。
类仅仅是文字上的描述,相当于图纸。所以我们有一份QQ汽车的设计图纸,我们可以称这个图纸为类,因为他抽象了将来被生产出来的汽车所具有的所有价值体现。这份图纸被转到流水线后,就生产出了汽车,那么汽车和图纸有什么区别呢?我认为汽车是真正消耗了社会资源的实际物品,就是说汽车是图纸的实例。
所以我们记住第二点:
实例指的是对象(Object)。
总结一下:类就是代码,对象是内存。
那为什么我们要进入面向对象的世界呢?我们以前的C,VB等开发语言,还记得我们要背函数吗?记不住函数,要去帮助找相关数据操作的函数。比如我要去MSDN查字符串函数。找起来还很不方便,因此我们要买书,书上对各函数作了分类:字符串、日期、数学。我们发现函数被有序的组合起来,我们学习和查找都方便的多。所以产生了类,类把相关自身数据类型的函数聚集在一起,便于我们使用。
因此第三点:
函数是无序世界,类是有序世界。
C#中所有的类型都是对象类型,类仅支持单继承
System.Object | 所有其他类型的最高类型 |
System.String | 字符串类型 |
System.ValueType | 值类型的基类 |
System.Enum | 枚举类型的基类 |
System.Array | 所有数组类型基类 |
System.Delegate | 所有委托类型基类 |
System.Exception | 所有异常类型基类 |
类是一组数据的集合,我们将他们分类看下
数据成员 | 常数 |
字段 | |
函数成员 | 方法 |
属性 | |
事件 | |
索引器 | |
运算符 | |
实例构造函数 | |
静态构造函数 | |
析构函数 |
类允许修饰,有类声明修饰、访问修饰、成员修饰