面向对象编程基础0000

上传人:仙*** 文档编号:33480883 上传时间:2021-10-17 格式:PPT 页数:27 大小:165.50KB
收藏 版权申诉 举报 下载
面向对象编程基础0000_第1页
第1页 / 共27页
面向对象编程基础0000_第2页
第2页 / 共27页
面向对象编程基础0000_第3页
第3页 / 共27页
资源描述:

《面向对象编程基础0000》由会员分享,可在线阅读,更多相关《面向对象编程基础0000(27页珍藏版)》请在装配图网上搜索。

1、1 1 面向对象的编程基础面向对象的编程基础 4.1 4.1 类类4.2 4.2 结构结构4.3 4.3 方法方法4.4 4.4 属性与索引器属性与索引器2 24.1 4.1 类类类与对象类与对象类:一组具有相同数据结构和相同操作的对象的集合。类:一组具有相同数据结构和相同操作的对象的集合。 例如例如: :汽车汽车对象(实例):类的实例化对象(实例):类的实例化 。例如。例如: :卡车卡车注意:注意:要使用对象,必须先定义类,然后再创建对象。要使用对象,必须先定义类,然后再创建对象。对象的生存周期对象的生存周期对象在建立时分配了内存,创建对象实际上作了两个方面的工作:对象在建立时分配了内存,创

2、建对象实际上作了两个方面的工作:(1 1)使用)使用newnew保留字要求系统分配内存;保留字要求系统分配内存;(2 2)使用构造函数初始化数据。)使用构造函数初始化数据。销毁对象也是做了两个方面的工作:销毁对象也是做了两个方面的工作: (1 1)释放占用的内存;)释放占用的内存; (2 2)将分配给对象的内存归还给堆()将分配给对象的内存归还给堆(HeapHeap)。)。 3 34.1 4.1 类的组织类的组织1.1.类的声明类的声明用用classclass定义类,声明类的形式为:定义类,声明类的形式为: 附加声明附加声明 访问修饰符访问修饰符 class class 类名称类名称 : 基类

3、基类 ,接口序列,接口序列 字段声明字段声明 构造函数构造函数 方法方法 事件事件 注意注意:中的内容可省或任中的内容可省或任选其一选其一, ,当两者都有时当两者都有时, ,先基先基类后接口类后接口4 44.1 4.1 类的组织(续)类的组织(续)publicpublic class Child class Child private int age; private int age; private string name; private string name; / / 不带参数的构造函数不带参数的构造函数 public Child()public Child() name = none

4、; name = none; / / 带参数的构造函数带参数的构造函数 public Child(string name, int age)public Child(string name, int age) 如果不指明,则如果不指明,则默认为默认为privateprivate5 54.1 4.1 类的组织(续)类的组织(续) this.name = name; this.name = name; this.age = age; this.age = age; / / 输出方法输出方法 public void PrintChild()public void PrintChild() Conso

5、le.WriteLine(0, 1 years old. Console.WriteLine(0, 1 years old., name, age);, 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)

6、;Child child1 = new Child(Zhang San, 11); Child child2 = 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

7、#2: ); Console.Write(Child #2: ); child2.PrintChild(); 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,

8、 11 years old.Child #2: Li Si, 10 years old.Child #2: Li Si, 10 years old.Child #3: none, 0 years old.Child #3: none, 0 years old.8 84.1.2 4.1.2 构造函数构造函数 作用:作用:构造函数是一个特殊的方法,用于在建立对象时构造函数是一个特殊的方法,用于在建立对象时进行初始化的动作。进行初始化的动作。 好处:好处:确保每一个对象在被使用之前都适当地进行了初确保每一个对象在被使用之前都适当地进行了初始化的动作。始化的动作。 构造函数特点:构造函数特点: 1)

9、1) 每个类至少有一个构造函数。若程序代码中没有构造每个类至少有一个构造函数。若程序代码中没有构造函数则系统会自动提供一个默认的构造函数。函数则系统会自动提供一个默认的构造函数。 2) 2) 一个构造函数总是和它的类名相同。一个构造函数总是和它的类名相同。 3) 3) 构造函数不包含任何返回值。构造函数不包含任何返回值。 4) 4) 构造函数总是构造函数总是publicpublic的。的。 一般在构造函数中作初始化工作,对于执行过程用时比一般在构造函数中作初始化工作,对于执行过程用时比较长的程序代码,最好不要放在构造函数中。较长的程序代码,最好不要放在构造函数中。9 94.1.2 4.1.2

10、构造函数(续)构造函数(续) 1 1、默认构造函数、默认构造函数(1 1)如果在类中不定义构造函数,系统会提供一个默认的构)如果在类中不定义构造函数,系统会提供一个默认的构造函数。造函数。(2 2)默认构造函数没有参数。)默认构造函数没有参数。(3 3)默认构造函数自动将非静态成员初始化为:)默认构造函数自动将非静态成员初始化为: 数值型数值型: :如如intint、doubledouble等,初始化为等,初始化为0 0。 boolbool类型:初始化为类型:初始化为false.false. 引用类型:初始化为引用类型:初始化为nullnull。(4 4)如果自己定义了类的构造函数,则所有初始

11、化工作由编)如果自己定义了类的构造函数,则所有初始化工作由编程者自己完成。程者自己完成。10104.1.2 4.1.2 构造函数(续)构造函数(续)2. 2. 重载构造函数重载构造函数 有时候可能会遇到这样的情况:在一个类中的多个方有时候可能会遇到这样的情况:在一个类中的多个方法中都要用到某一个数据成员,而该成员值必须从其他类法中都要用到某一个数据成员,而该成员值必须从其他类中传递过来。这时,无参数的构造函数就不能胜任了,解中传递过来。这时,无参数的构造函数就不能胜任了,解决这个问题最好的办法就是:重载(决这个问题最好的办法就是:重载(OverloadingOverloading)构造函)构造

12、函数。数。11114.1.2 4.1.2 构造函数(续)构造函数(续)using System;using System;using System.Collections.Generic;using System.Collections.Generic;using System.Text;using System.Text;namespace OverloadingExamplenamespace OverloadingExample class Program class Program public Program() public Program() Console.WriteLine(

13、null); Console.WriteLine(null); 12124.1.2 4.1.2 构造函数(续)构造函数(续) public Program(string 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!); P

14、rogram bb = new Program(How are you!); Console.ReadLine(); Console.ReadLine(); 13134.1.3 4.1.3 字段和局部变量字段和局部变量字段字段: :指声明为类一级的对象或值类型的变量。指声明为类一级的对象或值类型的变量。 局部变量局部变量: :指在方法、事件以及构造函数内声明的变量。指在方法、事件以及构造函数内声明的变量。 public class Programpublic class Program public static int j=20; / public static int j=20; /字段字

15、段 public static void Main()public static void Main() int j=30; / int j=30; /局部变量局部变量 Console.WriteLine(j); /Console.WriteLine(j); /输出结果:输出结果:3030 Console.WriteLine(Program.j); / Console.WriteLine(Program.j); /输出结果:输出结果:2020 Console.ReadLine(); Console.ReadLine(); 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 (常用)(常用)任何外部的类都可以不受限制的存取这个类的方法和任何外部的类都可以不受限制的存取这个类的方法

18、和数据成员。数据成员。 private private (常用)(常用)类中的所有方法和数据成员只能在此类中使用,外部类中的所有方法和数据成员只能在此类中使用,外部无法存取。无法存取。( (默认默认) ) ProtectedProtected 除了让本身的类可以使用之外,任何继承自此类的子类都可除了让本身的类可以使用之外,任何继承自此类的子类都可以存取。以存取。 Internal Internal 在当前项目中都可以存取。该访问权限一般用于基于组件的在当前项目中都可以存取。该访问权限一般用于基于组件的开发,因为它可以使组件以私有方式工作,而该项目外的其它代码无法开发,因为它可以使组件以私有方式

19、工作,而该项目外的其它代码无法访问。访问。 Protected internalProtected internal 只限于当前项目,或者从该项目的类继承的类才只限于当前项目,或者从该项目的类继承的类才可以存取。可以存取。 PartialPartial 局部类型,类的定义和实现可以分布在多个文件中,但都要局部类型,类的定义和实现可以分布在多个文件中,但都要使用使用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;结构和类的区别与联系:结构和类的区别与联系: 结构类型是值类型,类类型是引用类型。结构类型是值类型,类类型是引用类型。 凡是定义为结构的,都可以用类来定义。凡是定义为结构的,都可以用类来定义。 创建

21、轻量级对象时,可以使用结构。创建轻量级对象时,可以使用结构。18184.3 4.3 方法方法 方法(方法(MethodMethod)是一组程序代码的集合,每个方法都有一)是一组程序代码的集合,每个方法都有一个方法名,便于识别和让其他方法调用。个方法名,便于识别和让其他方法调用。1. 1. 方法的定义与使用方法的定义与使用 (1 1)方法必须放在某个类中。)方法必须放在某个类中。 (2 2)定义方法的语法形式为:)定义方法的语法形式为: 访问修饰符访问修饰符 返回值类型返回值类型 方法名称(参数序列)方法名称(参数序列) 语句序列语句序列 19194.3 4.3 方法(续)方法(续)定义方法时,

22、需要注意以下几点:定义方法时,需要注意以下几点:方法名不能和变量、常数或者任何声明在类中其它的成员相方法名不能和变量、常数或者任何声明在类中其它的成员相同。同。方法可以有参数,也可以没有参数,但是不论是否有参数,方法可以有参数,也可以没有参数,但是不论是否有参数,小括号都是必需的。如果参数序列中的参数有多个,则以逗小括号都是必需的。如果参数序列中的参数有多个,则以逗号分开。号分开。结束某个方法的执行,可以使用结束某个方法的执行,可以使用returnreturn语句,程序遇到语句,程序遇到retureturnrn语句后,会将执行流程交还给调用此方法的程序代码段。语句后,会将执行流程交还给调用此方

23、法的程序代码段。此外,还可以用此外,还可以用returnreturn语句返回一个值。语句返回一个值。如果声明一个非如果声明一个非voidvoid类型的方法,则方法中必须至少有一个类型的方法,则方法中必须至少有一个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(t

24、his is MyMethod.); int i = 10; int i = 10; return i; return i; static void Main() static 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

25、is 0., j); 21214.3 4.3 方法方法2. 2. 方法中的参数传递方法中的参数传递1) 1) 传递值类型的参数传递值类型的参数 值类型参数的格式为:值类型参数的格式为: 参数类型参数类型 参数名参数名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.WriteL

26、ine(调用调用AddOneAddOne之前,之前,a=0, a);a=0, a); AddOne(a); AddOne(a); Console.WriteLine( Console.WriteLine(调用调用AddOneAddOne之后,之后,a=0, a);a=0, a); Console.ReadLine(); Console.ReadLine(); 22224.3 4.3 方法(续)方法(续)2) 2) 传递引用类型的参数传递引用类型的参数引用类型参数的格式为:引用类型参数的格式为: ref ref 参数类型参数类型 参数参数class Programclass Program pu

27、blic static void AddOne(ref int a)a+; public static void AddOne(ref 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(ref a); AddOne(ref a); Console.WriteLine( Console.WriteLine(调用调用AddOneAddOne之后,

28、之后,a=0, a);a=0, a); Console.ReadLine(); Console.ReadLine(); 23234.3 4.3 方法(续)方法(续) 3) 3) 输出多个引用类型的参数输出多个引用类型的参数 输出引用类型参数的格式为:输出引用类型参数的格式为: 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 =

29、5; b = 6; b = 6; static void Main() static void Main() int x, y; int x, y; MyMethod(out x, out y); MyMethod(out x, out y); Console.WriteLine( Console.WriteLine(调用调用MyMethodMyMethod之后,之后,x=0,y=1, x, x=0,y=1, x, y);y); Console.ReadLine(); Console.ReadLine(); 24244.3 4.3 方法(续)方法(续) 4) 4) 传递个数不确定的参数传递个数

30、不确定的参数 需要传递的参数个数不确定时,可以采用需要传递的参数个数不确定时,可以采用paramsparams关键字,关键字,其后一般跟一个数组其后一般跟一个数组。class Programclass 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; +

31、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.WriteLine(1 Console.WriteLine(1、2 2、3 3、5 5的平均值为的平均值为0, 0, x);x); x = Average(

32、4, 5, 6, 7, 8); x = Average(4, 5, 6, 7, 8); Console.WriteLine(4 Console.WriteLine(4、5 5、6 6、7 7、8 8的平均值为的平均值为00, x);, x); Console.ReadLine(); Console.ReadLine(); 26264.3 4.3 方法(续)方法(续)3. 3. 方法重载方法重载 方法重载是指具有相同的方法名,但参数类型或参数个数方法重载是指具有相同的方法名,但参数类型或参数个数不完全相同的多个方法可以同时出现在一个类中。不完全相同的多个方法可以同时出现在一个类中。using S

33、ystem;using System;class Programclass Program public static int Add(int i, int j) public static int Add(int i, int j) return i + j; return i + j; public static string Add(string s1, string s2) public static string Add(string s1, string s2) return s1 + s2; return s1 + s2; public static long Add(long

34、x) public static long Add(long x) return x + 5; return x + 5;27274.3 4.3 方法(续)方法(续)static void Main()static void Main() Console.WriteLine(Add(1, 2); Console.WriteLine(Add(1, 2); Console.WriteLine(Add(1, 2); Console.WriteLine(Add(1, 2); Console.WriteLine(Add(10); Console.WriteLine(Add(10); / /按回车键结束按回车键结束 Console.ReadLine();Console.ReadLine();

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!