版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在面向对象的概念中,类是封装数据的基本单位。类是具有相同数据结构和相同操作的对象的集合,用于定义对象可以执行的操作(如方法、事件和属性等)。)。类的实例是一个对象,可以通过调用它的属性、方法和事件来访问它的函数。类和对象之间的区别可以通过现实生活中的例子来说明。如果一辆车被视为一个阶级,那么生活中的每一辆车都是一个对象,这也可以说是一个阶级的例子。第3章,面向对象编程基础,3.1面向对象编程组织,3.1.1与类相关的一些基本概念包括:类声明,对象的生命周期,字段和局部变量,静态成员和实例成员,以及访问修饰符。1.类声明使用类来定义C#语言中的类。声明的类采用带有附加声明访问修饰符的类名:的形式
2、,接口序列字段声明构造函数方法事件,其中的内容是可选的,冒号(:)表示继承的类或接口。第3章面向对象编程基础,3.1面向对象编程3.1.1类组织1。类声明当一个类从另一个类继承时,继承的类称为基类。注意:在C#语言中,只能有一个基类。但是,一个类可以从多个接口继承。当有多个接口序列时,项目用逗号分隔。如果既有基类又有接口,请将基类放在冒号之后,然后是接口名称。示例3-1声明了类、字段、构造函数和方法。使用系统;使用系统。集合。通用;使用系统。文本;命名空间状态示例公共类子私有整数;私有字符串名称;/构造函数publiccold () name=无参数;/构造函数公共子级(字符串名称,int a
3、ge)这个。name=带参数的名称;年龄=年龄;/output方法public void print child()console . write line(0,1岁。姓名,年龄);公共类程序public static void main()/使用new关键字创建一个对象,后跟被调用的构造函数childchild1=newchild(张三,11);孩子2=新孩子(李思,10岁);子项3=新子项();/显示结果控制台。书写(孩子# 1:);儿童1。printChild();控制台。书写(孩子# 2:);儿童2。printChild();控制台。写(孩子# 3:);儿童3。printChild()
4、;控制台。ReadLine();输出结果:孩子# 1:张三,11岁。孩子2:李思,10岁。孩子# 3:没有,0岁。第3章,面向对象编程基础,3.1面向对象编程3.1.1类组织2,一个对象的生命周期不是由其所在的区域决定的,它(1)当一个对象被创建时,内存被分配。事实上,创建一个对象已经完成了两个任务:使用新的保留字需要系统通过使用构造函数来分配内存和初始化数据。(2)类似于Java语言,C#语言也使用垃圾收集机制来自动销毁对象,即在适当的时候自动启动收集机制,然后检测未引用的对象并销毁它们。事实上,销毁对象也有两个作用:释放被占用的内存;将分配给对象的内存返回到堆中。第3章,面向对象编程基础,
5、3.1面向对象编程设计3.1.1类组织3,字段和局部变量为了区分不同范围的对象或值类型的变量,C#语言做了更详细的划分:类级对象或值类型的变量称为字段变量(也称为类变量);在方法、事件和构造函数中声明的变量称为局部变量。根据变量的位置,声明变量有不同的作用域。示例3-2定义了字段和局部变量。,使用系统;使用系统。集合。通用;使用系统。文本;命名空间定义示例公共类程序公共静态int j=20/定义字段j公共静态无效Main()int j=30;/定义本地变量j Console。write line(j);/输出结果:30控制台。写线;/输出结果:20控制台。ReadLine();当字段和局部变量
6、名称相同时,如果要引用静态字段,可以使用以下形式:类名。如果字段名是实例字段,请使用以下形式。字段名这意味着如果当前实例中没有同名的字段和局部变量名称,引用字段的形式与引用局部变量的形式相同。4.类中静态成员和实例成员定义的数据称为类的数据成员,数据成员包括字段、常数和事件等。函数成员提供一些函数来操作类中的数据,包括方法、属性和构造函数。静态成员:当类被加载到内存中时,系统会在内存中创建一个特殊的区域来保存这些静态成员,这样其他类就可以直接使用类的静态成员,而不需要建立类的实例。实例成员:只有在创建了类的实例时才能使用的成员。应该注意的是,静态成员在内存中只有一个副本,而实例成员可以有多个副
7、本。此外,静态成员在应用程序结束之前不会消失,因此有必要根据具体情况决定是否使用静态成员。在C#语言中,静态成员通过指定类名来调用,实例成员通过指定实例名来调用。5.访问修饰符将数据和方法封装在一个类中,以便于控制和修改数据和方法。访问修饰符用于控制类中数据和方法的访问权限。C#语言中有以下成员访问修饰符。公共:任何外部类都可以无限制地访问该类的方法和数据成员。私有:意味着一个类中的所有方法和数据成员只能在这个类中使用,不能从外部访问。受保护的:除了它自己的类可以被使用,从这个类继承的任何子类都可以被访问。内部:可在当前项目中访问。这种访问权限通常用于基于组件的开发,因为它可以使组件以私有方式
8、工作,但是项目之外的其他代码不能访问它。受保护的内部:访问仅限于当前项目或从项目类继承的类。局部类型:局部类型。一个类的定义和实现可以分布在多个文件中,但是它们必须用partial标记。注意:基类只需要声明一次,如果声明多次,它必须完全一致。3.1.2构造函数构造函数是一种特殊的方法,用于在创建对象时进行初始化。每当用C#创建对象时,首先调用类中定义的构造函数。构造函数还具有以下特征。(1)每个类至少有一个构造函数。如果程序代码中没有构造函数,系统将自动提供一个默认的构造函数。(2)构造函数总是与其类名相同。(3)构造函数不包含任何返回值。(4)构造函数通常使用公共的访问修饰符,因此这个类的实
9、例可以在其他函数中创建。您也可以使用访问修饰符private创建一个私有构造函数。私有构造函数是一种特殊的实例构造函数,通常用在只包含静态成员的类中,以防止类被实例化。注意:如果没有为构造函数使用访问修饰符,默认情况下它是一个私有的构造函数。然而,私有修饰符通常被显式地用来明确表示类不能被实例化。1.默认构造函数如果类中没有定义构造函数,系统将自动提供不带参数的默认构造函数。提供默认构造函数的目的是确保未初始化的非静态类成员可以在使用对象之前初始化,也就是说,非静态成员被初始化为以下值。(1)数字类型,如int、double等。初始化为0。(2)对于bool类型,初始化为false。(3)引用
10、类型被初始化为空。如果类的构造函数是在程序代码中定义的,那么所有的初始化工作都是由程序员自己完成的。重载构造函数有时可能会遇到这样的情况:某个数据成员在一个类的多个方法中使用,并且成员值必须从其他类传递。此时,无参数的构造函数是不能胜任的,解决这个问题的最好方法是重载构造函数。使用系统;命名空间溢出示例类程序公共程序()控制台。write line(null);公共程序(字符串)控制台。WriteLine(字符串);静态无效主()程序aa=新程序();程序bb=新程序(你好!);控制台。ReadLine();输出结果:空你好!3.1.3方法方法是一组程序代码,每个方法都有一个方法名,便于识别和
11、调用其他方法。1.C#程序中定义的方法和方法的定义必须放在某个类中。定义方法的一般形式是访问修饰符、返回值类型、方法名称(参数序列)、语句序列。定义方法时,请注意以下几点。(1)方法名称后面的括号可以有参数序列,也可以没有参数,但是不管有没有参数,括号都是必要的。如果参数序列中有多个参数,它们用逗号分隔。(2)如果想要结束一个方法的执行,可以使用return语句。当程序遇到一个返回语句时,它将把执行流返回到调用这个方法的程序代码段。此外,您可以使用return语句返回值。注意,return语句只能返回一个值。(3)如果声明了一个void类型的方法,返回语句可以省略而不写;如果声明的方法不是vo
12、id类型,则该方法中必须至少有一条return语句。示例3-4定义并调用方法。使用系统;命名空间方法示例类程序公共接口方法()控制台。写线(这是我的方法。);int i=10返回I;静态无效主()程序方法=新程序();int j=5;j=方法。my METHoD();控制台。写线(值为0。j);控制台。ReadLine();输出结果:这是我的方法。该值为10。2。在方法中传递参数以定义方法时,可以将参数传递到方法中进行处理,或者将方法中已处理的信息返回给调用方。当涉及到参数传递时,我们必须首先理解值类型和引用类型:值类型存储在堆栈中并被直接访问。如果有:int a=0;int b=a;生成两个
13、堆栈中对象。引用类型需要在堆中显式分配,不能直接访问!必须在堆栈中分配一个对象(C是指针,C#是引用)来指向堆栈中的对象。如果:stringbuilder strb=newstringbuilder();StringBuilder strb2=strb堆中只有一个对象,堆栈中的两个对象指向堆中的对象。可以看出,每个变量都是堆栈中的一个对象。无论是值类型还是引用类型,只有值类型堆栈中的对象是其内容,而引用类型堆栈中的对象只是指向堆中对象的地址。有两种参数传递:值传递和引用传递:通常,当引用和输出没有被明确指出时,它们都是值传递。价值转移:转移对象的价值副本。也就是说,函数中的参数对象(形式参数)
14、是调用时传递对象的堆栈中的对象(实际参数)的副本!值传递参数的格式为:参数类型参数名称。只要指明参数类型和参数名称,定义值传递参数的方式就非常简单。调用此方法时,将为每个值传递参数分配一个新的堆栈内存空间,然后将相应的参数值复制到内存空间。更改方法中的参数值不会影响该方法之外的变量。传递引用:传递堆栈中对象的地址。也就是说,函数中的参数对象(形式参数)和调用时的传递对象(实际参数)完全是同一堆栈中的对象!引用传递参数的格式是:引用参数类型参数名称不同于值传递参数,引用传递参数不重新分配堆栈内存空间,而是实际传递指向原始变量的地址,即引用参数和原始变量存储在同一个堆栈地址中。为了将其与值传递参数区分开来,在它之前添加了ref关键字。在该方法中,修改引用参数的值实际上就是修改被引用变量的值。为便于进一步分析,如果考虑到参数数据类型在传值和传参之间的差异,参数化方法设计主要有四种形式:传值值类型数据传参类型数据传参类型数据传参类型数据传参类型数据传参类型数据,请分析下面备注页的样本!2010摘要:对于值传递参数,无论是值类型参数还是引用类型参数,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仓储物流配送协议合同二篇
- 吸痰护理相关研究进展
- 财务工作培训心得体会
- 老年抑郁症的护理与生活质量提升
- 2026年幼儿园衔接班教学计划方案
- 2026年清廉学校建设工作计划幼儿园
- 2026年岗位安全事故案例分享会
- 2026年学生会保卫部工作规划
- 信宜市2024广东信宜市事业单位招聘急需紧缺人才24人笔试历年参考题库典型考点附带答案详解
- 京口区2025江苏镇江市京口区事业单位集中招聘工作人员12人笔试历年参考题库典型考点附带答案详解
- 矿业融资居间合同标准范本(2025版)
- 非煤矿山职业危害课件
- 警用知识装备培训
- GB/T 1634.1-2025塑料负荷变形温度的测定第1部分:通用试验方法
- 初一英语上册单词表(完整版)浙教版
- 土地平整施工合同
- 双重预防体系培训
- 电力应急救援队伍建设与管理方案
- 医学院《病历书写》评分表
- 移模管理办法
- GM/T 0109-2021基于云计算的电子签名服务技术要求
评论
0/150
提交评论