您的位置:首页 > 编程语言 > C#

《C#图解教程》第4章 类的基本概念 读书笔记

2017-09-17 00:08 169 查看
4.1 类的概述

程序的数据和功能被组织为逻辑上的相关的数据项和函数的封装集合,并被称为类。

类是一个能存储数据并被执行代码的数据结构。它包含数据成员和函数成员。

数据成员:它存储与类或类的实例相关的数据。数据成员通常模拟该类所表示的现实世界事物的特性。

函数成员:它执行代码。通常会模拟类所表示的现实世界事物的功能和操作。

一个C#类可以有任意数目的数据成员和函数成员。

4.2 程序和类:一个快速示例

一个运行中的C#程序是一组相互作用的类型对象,它们中的不部分是类的实例。

4.3 声明类

类的声明定义新类的特征和成员。它并不创建类的实例,但创建了用于创建实例的模板。

类的声明提供下列内容:类的名称、类的成员和类的特征。

大括号内包含了成员的声明,它们组成了类主体。类成员可以在类主体内部以任何顺序声明。这意味着成员的声明完全可以引用另一个在后面的类声明中才定义的成员。

4.4 类成员

字段和方法是最重要的类成员类型,字段是数据成员,方法是函数成员。

4.4.1 字段

字段隶属类的变量。

它可以是任何类型,无论是预定义类型还是用户定义类型。

和所有变量一样,字段用来保存数据,并具有如下特征:它们可以被写入;它们可以被读取。

C#在类型的外部不能声明全局变量(也就是变量或字段)。所有字段都属于类型,而且必须在类型声明内部声明。

显示和隐式字段初始化:

字段初始化语句是字段声明的一部分,由一个等于号后面跟着一个求值表达式组成。

初始化值必须是编译时可确定的。

如果没有初始化语句,字段的值会被编译器设为默认值,默认值由字段的类型决定。可是总结起来,每种值类型的默认都是0,bool型是false,引用类型默认为null。

声明多个字段:

可以通过用逗号分隔名称的方式,在同一条语句中声明多个相同类型的字段。但不能在一个声明中混合不同的类型。

4.4.2 方法

方法是具有名称的可执行代码块,可以从程序的很多不同地方执行,甚至从其他程序中执行。

当方法被调用时,它执行自己所含的代码,然后返回到调用它的代码并继续执行调用代码。有些方法返回一个值到它们调用的位置。

声明方法的最简语法包括以下组成部分:返回类型、名称、参数列表和方法体。

C#中没有全局函数(也就是方法或函数)声明在类型声明的外部。

4.5 创建变量和类的实例

类的声明只是用于创建类的实例的蓝图。

类是引用类型。

数据的引用保存在一个类类型的变量中。所以,要创建类的实例,需要从声明一个类类型的变量开始。如果变量没有被初始化,它的值是未定义的。

4.6 为数据分配内存

声明类类型的变量所分配的内存是用来保存引用的,而不是用来保存类对象实际数据的。要为实际数据分配内存,需要使用new运算符。

new运算符为任意指定类型的实例分配并初始化内存。它依据类型的不同从栈或堆里分配。

使用new运算符组成一个对象创建表达式,它的组成如下:关键字new、要分配内存的实例的类型名称和成对的圆括号,可能包括参数或没有参数。

如果内存分配给一个引用类型,则对象创建表达式返回一个引用,指向在堆中被分配并初始化的对象实例。

4.7 实例成员

实例成员:类的每个实例都是不同都是不同的实体,它们有自己的一组数据成员,不同于同一类的其他实例。因为这些数据成员都和类的实例相关,所以被称为实例成员。

静态成员:实例成员是默认类型,但也可以声明与类而不是实例相关的成员,称为静态成员。

4.8 访问修饰符

从类的内部,任何函数成员都可以使用成员的名称访问类中任意的其他成员。

访问修饰符是成员声明的可选部分,指明程序的其他部分如何访问成员。访问修饰符放在简单声明形式之前。

5种成员访问控制:private、public、protected、internal和protected internal。

私有成员只能从声明它的类的内部访问,其他的类不能看见或访问它们。

私有访问是默认的访问级别,所以,如果一个成员在声明时不带访问修饰符,那它就是私有成员。

还可以使用priavte访问修饰符显式地将一个成员声明私有。隐式地声明私有成员和显式地声明没有语义上的不同,两种形式是等价的。

实例的公有成员可以被程序中的其他对象访问。必须使用public访问修饰符指定公有访问。

4.9 从类的内部访问成员

类的成员仅用其他类成员的名称就可以访问它们。

4.10 从类的外部访问成员

要从类的外部访问实例成员,必须包括变量名称和成员名称,中间用句点(.)分隔。这称为点运算符。

4.11 综合应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C#