版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 1 面向对象的编程根底面向对象的编程根底 4.1 类4.2 构造4.3 方法4.4 属性与索引器2 24.1 4.1 类类类与对象类与对象类:一组具有一样数据构造和一样操作的对象的集类:一组具有一样数据构造和一样操作的对象的集合。合。 例如例如: :汽车汽车对象实例:类的实例化对象实例:类的实例化 。例如。例如: :卡车卡车留意:要运用对象,必需先定义类,然后再创建对象。留意:要运用对象,必需先定义类,然后再创建对象。对象的生存周期对象的生存周期对象在建立时分配了内存,创建对象实践上作了两个对象在建立时分配了内存,创建对象实践上作了两个方面的任务:方面的任务:1 1运用运用newnew保管
2、字要求系统分配内存;保管字要求系统分配内存;2 2运用构造函数初始化数据。运用构造函数初始化数据。销毁对象也是做了两个方面的任务:销毁对象也是做了两个方面的任务: 1 1释放占用的内存;释放占用的内存; 2 2将分配给对象的内存归还给堆将分配给对象的内存归还给堆HeapHeap。 3 34.1 4.1 类的组织类的组织1.1.类的声明类的声明用用classclass定义类,声明类的方式为:定义类,声明类的方式为: 附加声明附加声明 访问修饰符访问修饰符 class class 类称号类称号 : 基类基类 ,接口序列,接口序列 字段声明字段声明 构造函数构造函数 方法方法 事件事件 留意留意:中
3、的内容可省或任中的内容可省或任选其一选其一, ,当两者都有时当两者都有时, ,先基先基类后接口类后接口4 44.1 4.1 类的组织续类的组织续public class Childpublic class Child private int age; private int age; private string name; private string name; / / 不带参数的构造函数不带参数的构造函数 public Child() public Child() name = none; name = none; / / 带参数的构造函数带参数的构造函数 public Child(st
4、ring name, int age) public Child(string name, int age) 假设不指明,那假设不指明,那么么默以为默以为privateprivate5 54.1 4.1 类的组织续类的组织续 = name; = name; this.age = age; this.age = age; / / 输出方法输出方法 public void PrintChild() public void PrintChild() Console.WriteLine(0, 1 years Console.WriteLine(0, 1 year
5、s old., name, age);old., name, age); public class Programpublic class Program 6 64.1 4.1 类的组织续类的组织续 public static void Main() public static void Main() / /运用运用newnew关键字创建对象,关键字创建对象,newnew后是调用的构造函数后是调用的构造函数 Child child1 = new Child(Zhang San, 11); Child child1 = new Child(Zhang San, 11); Child child2
6、 = new Child(Li Si, 10); Child child2 = new Child(Li Si, 10); Child child3 = new Child(); Child child3 = new Child(); / / 显示结果显示结果 Console.Write(Child #1: ); Console.Write(Child #1: ); child1.PrintChild(); child1.PrintChild(); Console.Write(Child #2: ); Console.Write(Child #2: ); child2.PrintChild()
7、; child2.PrintChild(); Console.Write(Child #3: ); Console.Write(Child #3: ); child3.PrintChild(); child3.PrintChild();7 74.1 4.1 类的组织续类的组织续 Console.ReadLine(); Console.ReadLine(); 输出结果:输出结果:Child #1: Zhang San, 11 years old.Child #1: Zhang San, 11 years old.Child #2: Li Si, 10 years old.Child #2: Li
8、 Si, 10 years old.Child #3: none, 0 years old.Child #3: none, 0 years old.8 84.1.2 4.1.2 构造函数构造函数 作用:构造函数是一个特殊的方法,用于在建立对象时作用:构造函数是一个特殊的方法,用于在建立对象时进展初始化的动作。进展初始化的动作。 益处:确保每一个对象在被运用之前都适当地进展了初益处:确保每一个对象在被运用之前都适当地进展了初始化的动作。始化的动作。 构造函数特点:构造函数特点: 1) 1) 每个类至少有一个构造函数。假设程序代码中没有每个类至少有一个构造函数。假设程序代码中没有构造函数那么系统会
9、自动提供一个默许的构造函数。构造函数那么系统会自动提供一个默许的构造函数。 2) 2) 一个构造函数总是和它的类名一样。一个构造函数总是和它的类名一样。 3) 3) 构造函数不包含任何前往值。构造函数不包含任何前往值。 4) 4) 构造函数总是构造函数总是publicpublic的。的。 普通在构造函数中作初始化任务,对于执行过程用时比普通在构造函数中作初始化任务,对于执行过程用时比较长的程序代码,最好不要放在构造函数中。较长的程序代码,最好不要放在构造函数中。9 94.1.2 4.1.2 构造函数续构造函数续 1 1、默许构造函数、默许构造函数1 1假设在类中不定义构造函数,系统会提供一个默
10、许的构假设在类中不定义构造函数,系统会提供一个默许的构造函数。造函数。2 2默许构造函数没有参数。默许构造函数没有参数。3 3默许构造函数自动将非静态成员初始化为:默许构造函数自动将非静态成员初始化为: 数值型数值型: :如如intint、doubledouble等,初始化为等,初始化为0 0。 bool bool类型:初始化为类型:初始化为false.false. 援用类型:初始化为援用类型:初始化为nullnull。4 4假设本人定义了类的构造函数,那么一切初始化任务由假设本人定义了类的构造函数,那么一切初始化任务由编程者本人完成。编程者本人完成。10104.1.2 4.1.2 构造函数续
11、构造函数续2. 2. 重载构造函数重载构造函数 有时候能够会遇到这样的情况:在一个类中有时候能够会遇到这样的情况:在一个类中的多个方法中都要用到某一个数据成员,而该成的多个方法中都要用到某一个数据成员,而该成员值必需从其他类中传送过来。这时,无参数的员值必需从其他类中传送过来。这时,无参数的构造函数就不能胜任了,处理这个问题最好的方构造函数就不能胜任了,处理这个问题最好的方法就是:重载法就是:重载OverloadingOverloading构造函数。构造函数。11114.1.2 4.1.2 构造函数续构造函数续using System;using System;using System.Col
12、lections.Generic;using System.Collections.Generic;using System.Text;using System.Text;namespace OverloadingExamplenamespace OverloadingExample class Program class Program public Program() public Program() Console.WriteLine(null); Console.WriteLine(null); 12124.1.2 4.1.2 构造函数续构造函数续 public Program(str
13、ing str) public Program(string str) Console.WriteLine(str); Console.WriteLine(str); static void Main() static void Main() Program aa = new Program(); Program aa = new Program(); Program bb = new Program(How are you!); Program bb = new Program(How are you!); Console.ReadLine(); Console.ReadLine(); 13
14、134.1.3 4.1.3 字段和部分变量字段和部分变量u字段字段: :指声明为类一级的对象或值类型的变量。指声明为类一级的对象或值类型的变量。 u部分变量部分变量: :指在方法、事件以及构造函数内声明的变量。指在方法、事件以及构造函数内声明的变量。 upublic class Programpublic class Programu u public static int j=20; / public static int j=20; /字段字段u public static void Main() public static void Main()u u int j=30; / int j
15、=30; /部分变量部分变量u Console.WriteLine(j); / Console.WriteLine(j); /输出结果:输出结果:3030u Console.WriteLine(Program.j); / Console.WriteLine(Program.j); /输出结输出结果:果:2020u Console.ReadLine(); Console.ReadLine();u u 14144.1.3 4.1.3 字段和部分变量字段和部分变量 当字段和部分变量名一样时,假设要援用静态字段,可当字段和部分变量名一样时,假设要援用静态字段,可以运用下面的方式:以运用下面的方式: 类
16、名类名. .字段名字段名 假设是实例字段,那么运用下面的方式:假设是实例字段,那么运用下面的方式: this. this.字段名字段名 这里的这里的thisthis指当前实例。指当前实例。 当然,假设没有出现字段和部分变量名重名的情况,援用当然,假设没有出现字段和部分变量名重名的情况,援用字段的方式和援用部分变量的方式一样。字段的方式和援用部分变量的方式一样。15154.1.4 4.1.4 静态成员与实例成员静态成员与实例成员类的成员包括字段、属性、构造函数、方法、事件、索引、嵌类的成员包括字段、属性、构造函数、方法、事件、索引、嵌套类。套类。类的成员分静态成员和实例成员类的成员分静态成员和实
17、例成员静态成员在内存中只需一份静态成员在内存中只需一份静态成员要等到运用程序终了时才会退出内存。静态成员要等到运用程序终了时才会退出内存。把只需创建了类的实例才可以运用的成员叫实例成员。把只需创建了类的实例才可以运用的成员叫实例成员。 16164.1.5 4.1.5 访问修饰符访问修饰符C#C#中有以下成员访问修饰符:中有以下成员访问修饰符:Public Public 常用任何外部的类都可以不受限制的存取这个类常用任何外部的类都可以不受限制的存取这个类的方法和数据成员。的方法和数据成员。private private 常用类中的一切方法和数据成员只能在此类中运常用类中的一切方法和数据成员只能在
18、此类中运用,外部无法存取。用,外部无法存取。( (默许默许) )Protected Protected 除了让本身的类可以运用之外,任何承继自此类的除了让本身的类可以运用之外,任何承继自此类的子类都可以存取。子类都可以存取。Internal Internal 在当前工程中都可以存取。该访问权限普通用于基在当前工程中都可以存取。该访问权限普通用于基于组件的开发,由于它可以使组件以私有方式任务,而该工于组件的开发,由于它可以使组件以私有方式任务,而该工程外的其它代码无法访问。程外的其它代码无法访问。Protected internal Protected internal 只限于当前工程,或者从该
19、工程的类承只限于当前工程,或者从该工程的类承继的类才可以存取。继的类才可以存取。 Partial Partial 部分类型,类的定义和实现可以分布在多个文件中,部分类型,类的定义和实现可以分布在多个文件中,但都要运用但都要运用partialpartial标注,基类只需求声明一次,假设多次标注,基类只需求声明一次,假设多次声明那么必需完全一致。声明那么必需完全一致。17174.2 4.2 构造构造 构造构造structstruct是由一系列相关的、但类型不一定一样的变是由一系列相关的、但类型不一定一样的变量组织在一同而构成的数据表示方式,一切构造类型都隐式量组织在一同而构成的数据表示方式,一切构
20、造类型都隐式地从类型地从类型objectobject承继。承继。 例如:例如:public struct Pointpublic struct Point public int x; public int x; public int y; public int y; 构造和类的区别与联络:构造和类的区别与联络: 构造类型是值类型,类类型是援用类型。构造类型是值类型,类类型是援用类型。 凡是定义为构造的,都可以用类来定义。凡是定义为构造的,都可以用类来定义。 创建轻量级对象时,可以运用构造。创建轻量级对象时,可以运用构造。18184.3 4.3 方法方法 方法方法MethodMethod是一组程
21、序代码的集合,每个方法都有一是一组程序代码的集合,每个方法都有一个方法名,便于识别和让其他方法调用。个方法名,便于识别和让其他方法调用。1. 1. 方法的定义与运用方法的定义与运用 1 1方法必需放在某个类中。方法必需放在某个类中。 2 2定义方法的语法方式为:定义方法的语法方式为: 访问修饰符访问修饰符 前往值类型前往值类型 方法称号参数序列方法称号参数序列 语句序列语句序列 19194.3 4.3 方法续方法续定义方法时,需求留意以下几点:定义方法时,需求留意以下几点:方法名不能和变量、常数或者任何声明在类中其它的成员一样。方法名不能和变量、常数或者任何声明在类中其它的成员一样。方法可以有
22、参数,也可以没有参数,但是不论能否有参数,小方法可以有参数,也可以没有参数,但是不论能否有参数,小括号都是必需的。假设参数序列中的参数有多个,那么以逗括号都是必需的。假设参数序列中的参数有多个,那么以逗号分开。号分开。终了某个方法的执行,可以运用终了某个方法的执行,可以运用returnreturn语句,程序遇到语句,程序遇到returnreturn语句后,会将执行流程交还给调用此方法的程序代码段。此语句后,会将执行流程交还给调用此方法的程序代码段。此外,还可以用外,还可以用returnreturn语句前往一个值。语句前往一个值。假设声明一个非假设声明一个非voidvoid类型的方法,那么方法中
23、必需至少有一个类型的方法,那么方法中必需至少有一个returnreturn语句。语句。20204.3 4.3 方法续方法续using System;using System;class Programclass Program public int MyMethod() public int MyMethod() Console.WriteLine(this is MyMethod.); Console.WriteLine(this is MyMethod.); int i = 10; int i = 10; return i; return i; static void Main() sta
24、tic void Main() Program method = new Program(); Program method = new Program(); int j = 5; int j = 5; j = method.MyMethod(); j = method.MyMethod(); Console.WriteLine(the value is 0., j); Console.WriteLine(the value is 0., j); 21214.3 4.3 方法方法2. 2. 方法中的参数传送方法中的参数传送1) 1) 传送值类型的参数传送值类型的参数 值类型参数的格式为:值类型
25、参数的格式为: 参数类型参数类型 参数名参数名class Programclass Program public static void AddOne(int a)a+; public static void AddOne(int a)a+; static void Main() static void Main() int a = 3; int a = 3; Console.WriteLine( Console.WriteLine(调用调用AddOneAddOne之前,之前,a=0, a);a=0, a); AddOne(a); AddOne(a); Console.WriteLine( C
26、onsole.WriteLine(调用调用AddOneAddOne之后,之后,a=0, a);a=0, a); Console.ReadLine(); Console.ReadLine(); 22224.3 4.3 方法续方法续2) 2) 传送援用类型的参数传送援用类型的参数援用类型参数的格式为:援用类型参数的格式为: ref ref 参数类型参数类型 参数参数class Programclass Program public static void AddOne(ref int a)a+; public static void AddOne(ref int a)a+; static void
27、 Main() static void Main() int a = 3; int a = 3; Console.WriteLine( Console.WriteLine(调用调用AddOneAddOne之前,之前,a=0, a);a=0, a); AddOne(ref a); AddOne(ref a); Console.WriteLine( Console.WriteLine(调用调用AddOneAddOne之后,之后,a=0, a);a=0, a); Console.ReadLine(); Console.ReadLine(); 23234.3 4.3 方法续方法续 3) 3) 输出多个
28、援用类型的参数输出多个援用类型的参数 输出援用类型参数的格式为:输出援用类型参数的格式为: out out 参数类型参数类型 参数名参数名class Programclass Program public static void MyMethod(out int a, out int b) public static void MyMethod(out int a, out int b) a = 5; a = 5; b = 6; b = 6; static void Main() static void Main() int x, y; int x, y; MyMethod(out x, ou
29、t y); MyMethod(out x, out y); Console.WriteLine( Console.WriteLine(调用调用MyMethodMyMethod之后,之后,x=0,y=1, x, y);x=0,y=1, x, y); Console.ReadLine(); Console.ReadLine(); 24244.3 4.3 方法续方法续 4) 4) 传送个数不确定的参数传送个数不确定的参数 需求传送的参数个数不确定时,可以采用需求传送的参数个数不确定时,可以采用paramsparams关键字,其后普通跟一关键字,其后普通跟一个数组。个数组。class Programc
30、lass Program public static float Average(params long v) public static float Average(params long v) long total, i; long total, i; for (i = 0, total = 0; i v.Length; +i) for (i = 0, total = 0; i v.Length; +i) total += vi; total += vi; return (float)total / v.Length; return (float)total / v.Length; 25254.3 4.3 方法续方法续static void Main()static void Main() float x = Average(1, 2, 3, 5); float x = Average(1, 2, 3, 5); Console.W
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校就业指导中心运行及其效果研究-以北京师范大学为样本的深度剖析
- 高校大学生学业指导:问题剖析与创新策略探究-基于多案例的深度分析
- 高校助学贷款三大模式的运行困境与突破路径研究
- 高栏港经济区节能减排模型构建与优化:基于可持续发展的深度剖析
- 高新技术企业人员流动管理风险及应对策略:基于多案例的深入剖析
- 高一历史人民版必修一试题:6.1民主政治的摇篮古代希腊
- 养殖场养殖设备安全试题库及答案
- 养老护理员试题库(附参考答案)
- 初级护师《基础知识》真题测试题库(含答案)
- 加气站储气瓶组安全试题库及答案
- 中国重汽秋招题库及答案
- 中小学学校教学常规管理细则(2025修订版)
- 企业日常行政事务外包协议
- 银行培训竞聘班长
- DB35∕T 1036-2023 10kV及以下电力用户业扩工程技术规范
- 部编版语文五年级下册全册复习知识汇-总
- 安全培训矩阵管理制度
- cnc操机员考试试题及答案
- 股票市场的隐秘科学
- 常见业务场景网络安全建设VISIO图合集(27个类型)v2023
- 建筑变形测量规范
评论
0/150
提交评论