软件开发的两种主要的方式为面向对象和面向过程,面向过程的焦点主要放在指令的组合和优化上,面向对象的焦点从指令转移到组织程序的数据和功能上.
- 类
程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,称之为类.类作为一个有机的不可分割的整体,对外隐藏具体实现细节,从而实现可重用和易维护等特性,同时还提供了继承功能,支持子类获得父类特征.
类是一个能存储数据并执行代码的数据结构,是逻辑相关的数据和函数的封装,通常代表真实世界中的或概念上的事物.
类包括以下内容:
(1) 数据成员:数据成员用来存储与类或对象相关的数据.数据成员通常模拟该类所表示的现实世界事物的特性
(2) 函数成员:函数成员执行代码,通常模拟类所表示的现实世界事物的功能和操作.
成员可以使9种可能的成员的任意组合:
类是用户自定义数据类型:
C#中定义类的一般形式:
[类修饰符] class 类名
{
成员列表
}
类定义同结构体定义一样,系统不会为它分配存储空间。
- 访问修饰符的含义以及访问性:
对访问修饰符的使用补充:
(1) 所有显式声明在类中的成员都是互相可见的,无论这些成员具有何种访问控制属性
(2) 类的成员不会具有比类的整体更开放的访问权限
(3) 访问修饰符可以以任意顺序出现零次或多次,一个访问修饰符只修饰当前的一个类成员。
(4) 如果一个成员在声明的时候没有携带任何访问修饰符,则默认它是私有成员。
- 静态成员和实例成员
针对成员定义是否使用关键字static进行修饰,可以将类成员分为静态成员和实例成员
(1) 实例成员:
实例成员有时称为费静态成员,它与类成员的对象相关。当字段、方法、属性、事件、索引器、析构函数和构造函数的声明中不包含static修饰符时,它生命为实例成员。实例成员的特点:
① 使用“类对象.成员名”的形式进行引用
② 类的每一个对象分别包含一组该类的所有实例字段
③ 实例函数成员作用于类的给定对象,可借助this访问器访问。
(2) 静态成员
静态成员与类而不是类对象相关
当字段、方法、属性、事件、运算符或构造函数声明中含有static修饰符时,它声明静态成员。类的常量成员会隐式地声明静态成员
静态成员有如下特性:
① 使用“类名.成员名”的形式进行引用
② 静态字段的存储由类的所有对象共享,只有一个副本
③ 静态函数成员不能作用于具体对象们不能使用this访问器访问。
4.字段
字段是隶属于类的变量。他可以是任意数据类型,包括预定义类型和用户自定义类型。字段可以用来保存数据,并且支持读写操作。
字段的声明语法:
[static] 访问修饰符 数据类型 字段名;
static修饰符的字段是类的静态字段,只要类定义只有就由编译器为止分配空间。没有static关键字修饰的字段是类的实例字段,只有定义了类的对象或对类进行实例化之后,才为该对象或类实例分配这个字段的存储空间。
类的静态字段有位移的存储空间,被类的所有实例公共访问。对于类的实例字段,每个类实例都有独立的用以存储该实例字段的存储空间。
使用volitile修饰的可变字段只有在多线程的程序运行环境下,采用优化技术菜会造成与非可变字段不同的访问结果。
5.Main方法
Main方法的补充:
(1) Main方法必须声明为static,否则程序无法启动
(2) Main方法可以声明在程序中任意的类或者结构体中。
(3) Main方法默认被声明为private,此时只能通过执行环境来启动当前程序;Main方法可以被声明为publi使得其他程序能够访问。
- 1. 常量
常量的声明语法:
访问修饰符 const 数据类型 常量名=常量值
如 const double PI = 3.14;
用于初始化常量成员的值在编译期必须是可计算的,而且通常是一个预定义简单类型或由他们组成的表达式。成员常量只能在声明时给常量成员赋值,任何在声明之后给常量成员赋值的动作都会造成编译错误。
常量成员没有自己的存储位置,而是在编译时被编译器替换,因此不能使用static关键字进行修饰。
C#中没有全局变量,每个常量都必须声明在类型内。
- 2. 对象的创建
创建对象时需要使用new运算符。new运算符可以为任意指定类型的实例分配并初始化内存。创建对象的语法形式如下:
对象名 = new 类名();
进行对象创建时需要注意:
(1) new运算符后为要创建的对象所属类的类名;
(2) 类名后的圆括号不可省略
(3) 可以将对象的定义和创建合并一起;如 Point p1=new Point()
8.类的属性
类字段的访问权限一般的定义为private和protected,类外用户通过类的public方法来访问
C#中的属性把字段和访问他们的方法结合。属性为类用户提供了与字段读写相同的使用方法。
属性值得读写通过get访问器和set访问器实现的,可以对非法的赋值进行检查过滤。
(1) 属性的定义
属性声明的一般形式为:
[访问修饰符] 属性类型 属性名
{
get
{
//获取属性值得代码
return 表达式;//这里可以输入更多的代码,此处是典型代码
}
set {
//设置属性值的代码
}
}