1、面向对象概念
三个特性 : 封装,继承,多态
类 : 类是具有某些共同特征的事物的抽象表示
对象 :类的实例,即抽象事物的具体化。
方法: 类能够执行的动作
字段 :类的状态,是指类的一组相关变量。
2、 类的定义
关键字 class
语法 [访问修饰符] [static] class 类名
{
类成员
}
3、成员访问级别
类的字段、属性和方法都叫做类的成员,他们有自己的访问级别,这用来控制类怎样被访问,访问级别
有下列几种
public 任何地方都可以访问
private 只有定义成员的类可以访问
protected 只有定义他们的类和子类可以访问
internal 由当前程序集访问
类型成员的默认修饰符为private 而类的默认修饰符为internal
4、字段与属性
为了保护对象的私有数据,字段的访问修饰符为private,那么就只有定义它的类才可以操作这个字段
,如果其他类需要操作这个字段,该怎么办么,这就需要属性了
属性就是对字段的一种封装,用来保护字段的数据。并且可以对赋给字段的值进行检查,过滤不符合规
范的值
属性的定义语法
访问修饰符 数据类型 属性名
{
get{ return 字段名;}
set{ 字段名= value ;}
}
从语法上可以看出,属性可以看成一个拥有两个子方法的方法,只不过在定义方法时需要()来定义
参数,而属性不需要。
通过对属性内部get set方法的访问控制,我们还可以设置只读属性,只写属性。默认情况下,get
set方法的修饰符是继承与属性的访问修饰符
注意 属性并不存储任何数据,他是通过对字段的访问来达到存数数据和读取数据的目的。故一般情
况下,属性都会和一个字段有个映射关系。所有的数据都是存储在字段中的。
自动属性:当属性内的get和set方法不包含任何检查逻辑,指示简单的给字段赋值和取值,那么可以
使用自动属性来简化代码
访问修饰符 数据类型 属性名
{
get;
set;
}
使用自动属性时要注意,不能设置只读或只写属性。
5、类的实例化
关键字 new
语法 类名 变量名 = new 类名(参数)
new关键字的作用在于在堆中分配一块区域来存储对象,这个区域的引用被传递给变量,这样,通过这个
变量我们就可以访问对象中的成员
如果我们不使用new关键字,指示使用 类型 变量名 ;这种语法,只是申明了一块空间来存储一个相应
类的引用,但是这个引用的具体值并没有生成,所以,这种情况下我们并不能通过变量名来访问任何对象的
成员,因为我们并不知道这个对象存储在那个区域中,而new关键字的作用就是将这个存储区域的引用告诉
变量。
所以,多数情况下(静态类,抽象类不能使用new关键字),在使用一个类前,必须使用new关键字来分
配一个对象。
6、构造函数
构造函数是类的一个特殊的方法,没有返回值,连void都不用写,在我们使用new关键字来分配对象时
会自动调用。它的作用在于实例化一个类的时候来给对象的各个字段赋初始值。
每个c#类在定义时会有一个默认的无参的构造函数,这个构造函数会对所有字段都赋予一个对应数据类
型的默认值。
自定义的构造函数 语法,
public 类名(参数列表)
{
}
注意,一旦我们在类中定义了自己的构造函数,那么默认的构造函数就不会自动生成了,如果我们还需
要使用这个无参的构造函数,我们就必须显式的定义这个函数。