C#是面向对象(object-oriented)类型的计算机语言,使用类(class)来体现面向对象的概念。
分类(classification)
我们在现实世界中,会遇到很多被分类的事物。例如,动物,汽车,家具。这些事物,在计算机语言中统称为对象(object).拿汽车为例子,一个汽车最基本的配件、功能有:轮胎,方向盘、引擎,能驾驶等等。在编程世界里,我们创建一个汽车对象的过程,称为建模(modeling).建模的过程,就是将轮胎,方向盘,引擎,能驾驶等封装到模型中。封装是面向对象的几大特点中的一个。我们将轮胎,方向盘,引擎以字段(fields)的形式存在在模型中,将能驾驶以方法(method)的形式存在模型中。下面代码片段建了一个汽车模型,或者汽车类。
class Automobile { private string _steeringWheel; private string _tire; private string _engine; public void Run() { } }
当创建了一个类,这个类就会设定一个边界来隔离类内部与类外部。那么外部怎样去访问类内部的字段与方法呢?public修饰符,可以允许类外部访问。private修饰符,只允许类内部访问。
_steeringWheel,_tire,_engine,这些字段是private修饰,类外部不允许访问。Run()方法,public修饰,外部可以访问。我们将一些属性,方法封装在了Automobile类中。封装的意义有两个:
1.将属性、方法集合在一起。换句话说,就是分类。将属于汽车的配件,功能从其他事物中分类出来。
2.控制属性,方法的访问。通过给定访问修饰符来控制类外部是否访问类内部的字段,方法。
静态方法、数据:
静态方法,不同于普通方法,静态方法只能通过类来调用。普通方法只能通过实例化对象来调用。例如:
class Test { pulbic static DoWrok() { DoWork2(); //即使DoWork2与该方法在一个类中,也不可以访问。 //静态方法只可以访问静态方法,静态字段 } public void DoWork2() { } } Test.DoWork(); //可以调用成功 Test.DoWork(2);// 编译失败 Test object=new Test(); //实例化了Test对象 object.DoWork2(); //通过实例化对象来调用方法
一般静态方法都是一些常用方法,在程序中使用比较频繁,不用每次调用都要实例化对象。有静态方法,也有静态类。关于静态类,应当注意一下几点:
1.静态方法中只允许静态成员,换句话,静态类中的字段,方法必须都是静态的。
2.静态类的用处,封装一些常用的工具。
关于静态字段,与常量字段需要注意,常量字段不可以标记为静态类型,但是它静态的。
匿名类(Anonymous Class):
顾名思义,匿名类就是没有名字的类。我们用var关键字来定义它的类型。关于匿名类有一些限制:
1.匿名类只能包含公共字段
2.匿名类不可以包含方法
3.匿名类的字段不可以定义为静态的
4.匿名类的字段必须初始化
var Anonymous =new {Name="Diana",Age=46};