C#第4章面向对象编程基础.ppt





《C#第4章面向对象编程基础.ppt》由会员分享,可在线阅读,更多相关《C#第4章面向对象编程基础.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 1第第4 4章章 面向对象的编程基础面向对象的编程基础 4.1 4.1 类类4.2 4.2 结构结构4.3 4.3 方法方法4.4 4.4 属性与索引器属性与索引器2 2C#C#是一种强大的、面向对象的程序开发语言,本章将带是一种强大的、面向对象的程序开发语言,本章将带领读者进入领读者进入C#C#面向对象的世界,学习一些基本概念,包面向对象的世界,学习一些基本概念,包括对象、类等,以及如何创建和使用类的对象。括对象、类等,以及如何创建和使用类的对象。为什么要学习对象和类?举个简单的例子:汽车厂造车需要设计图和样板,然后造举个简单的例子:汽车厂造车需要设计图和样板,然后造出汽车。编程也是一样
2、的,类好比是制造汽车的设计图出汽车。编程也是一样的,类好比是制造汽车的设计图和样板,对象好比是汽车,这都是汽车厂不可或缺的东和样板,对象好比是汽车,这都是汽车厂不可或缺的东西。西。第第4 4章章 面向对象的编程基础面向对象的编程基础 3 3在现实世界中,对象就是拥有了这些特性和动作才会在这在现实世界中,对象就是拥有了这些特性和动作才会在这个世界上变得与众不同。因此,构成对象的两个最重要的个世界上变得与众不同。因此,构成对象的两个最重要的因素就是特征和动作。每一个现实世界中的实体都具有不因素就是特征和动作。每一个现实世界中的实体都具有不同的特征和动作。同的特征和动作。在编程领域,编程开发人员需要
3、尽可能地用对象来模拟现在编程领域,编程开发人员需要尽可能地用对象来模拟现实世界的实体,因此,在程序里,对象具有状态和行为。实世界的实体,因此,在程序里,对象具有状态和行为。对象的状态就是现实世界中对应实体的属性特征,对象的对象的状态就是现实世界中对应实体的属性特征,对象的行为就是现实世界中对应实体能够执行的动作。行为就是现实世界中对应实体能够执行的动作。在在 C#C#中,对象的状态被分别存储在一些变量里,而对象的中,对象的状态被分别存储在一些变量里,而对象的行为,则通过定义方法来实施。方法的作用就是要完成一行为,则通过定义方法来实施。方法的作用就是要完成一项特殊的工作。项特殊的工作。第第4 4
4、章章 面向对象的编程基础面向对象的编程基础 4 4知识点知识点对象:明白对象的属性和方法,学会使用对象。对象:明白对象的属性和方法,学会使用对象。类:辨别对象和类,明白类的属性和方法,了解类:辨别对象和类,明白类的属性和方法,了解类的成员。类的成员。属性:学会在类中添加属性,保护数据安全,以属性:学会在类中添加属性,保护数据安全,以及封装字段。及封装字段。结构:如何创建结构,结构和类有什么区别?结构:如何创建结构,结构和类有什么区别?索引器:会使用索引器索引器:会使用索引器5 54.1 4.1 类类类与对象类与对象类:一组具有相同数据结构和相同操作的对象的集合。类:一组具有相同数据结构和相同操
5、作的对象的集合。例如例如:汽车汽车对象(实例):类的实例化对象(实例):类的实例化 。例如。例如:卡车卡车注意:注意:要使用对象,必须先定义类,然后再创建对象。要使用对象,必须先定义类,然后再创建对象。对象的生存周期对象的生存周期对象在建立时分配了内存,创建对象实际上作了两个方面的工作:对象在建立时分配了内存,创建对象实际上作了两个方面的工作:(1 1)使用)使用newnew保留字要求系统分配内存;保留字要求系统分配内存;(2 2)使用构造函数初始化数据。)使用构造函数初始化数据。销毁对象也是做了两个方面的工作:销毁对象也是做了两个方面的工作:(1 1)释放占用的内存;)释放占用的内存;(2
6、2)将分配给对象的内存归还给堆()将分配给对象的内存归还给堆(HeapHeap)。)。6 64.1 4.1 类的组织类的组织1.1.类的声明类的声明用用classclass定义类,声明类的形式为:定义类,声明类的形式为:附加声明附加声明 访问修饰符访问修饰符 class class 类名称类名称:基类基类 ,接口序列,接口序列 字段声明字段声明 构造函数构造函数 方法方法 事件事件 注意注意:中的内容可省或任中的内容可省或任选其一选其一,当两者都有时当两者都有时,先基先基类后接口类后接口7 74.1 4.1 类的组织(续)类的组织(续)publicpublic class Child clas
7、s Child private int age;private int age;private string name;private string name;/不带参数的构造函数不带参数的构造函数 public Child()public Child()name=none;name=none;/带参数的构造函数带参数的构造函数 public Child(string name,int age)public Child(string name,int age)如果不指明,则如果不指明,则默认为默认为internalinternal8 84.1 4.1 类的组织(续)类的组织(续)this.na
8、me=name;this.name=name;this.age=age;this.age=age;/输出方法输出方法 public void PrintChild()public void PrintChild()Console.WriteLine(0,1 years Console.WriteLine(0,1 years old.,name,age);old.,name,age);public class Programpublic class Program 9 94.1 4.1 类的组织(续)类的组织(续)public static void Main()public static vo
9、id Main()/使用使用newnew关键字创建对象,关键字创建对象,newnew后是调用的构造后是调用的构造函数函数 Child child1=new Child(Zhang San,Child child1=new Child(Zhang San,11);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(C
10、hild#1:);child1.PrintChild();child1.PrintChild();Console.Write(Child#2:);Console.Write(Child#2:);child2.PrintChild();child2.PrintChild();Console.Write(Child#3:);Console.Write(Child#3:);child3.PrintChild();child3.PrintChild();10104.1 4.1 类的组织(续)类的组织(续)Console.ReadLine();Console.ReadLine();输出结果:输出结果:C
11、hild#1:Zhang San,11 years old.Child#1:Zhang San,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.1111c#c#中中thisthis的用法的用法 1 1、表示对象的当前实例。如果实例成员具有与形参相同的名称,则可以这、表示对象的当前实例。如果实例成员具有与形参相同的名称,则可以这样使用以示区别。样使用以示区别。2 2、将当前对象作为形参传递到其他方法中、将当前对象
12、作为形参传递到其他方法中 class Employeeclass Employee private string name;private string name;private string alias;private string alias;private decimal salary=3000.00m;private decimal salary=3000.00m;/Constructor:/Constructor:public Employee(string name,string alias)public Employee(string name,string alias)/Use
13、 this to qualify the fields,name and alias:/Use this to qualify the fields,name and alias:this.name=name;this.name=name;this.alias=alias;this.alias=alias;1212/Printingmethod:publicvoidprintEmployee()Console.WriteLine(Name:0nAlias:1,name,alias);/PassingtheobjecttotheCalcTaxmethodbyusingthis:Console.W
14、riteLine(Taxes:0:C,Tax.CalcTax(this);publicdecimalSalarygetreturnsalary;classTaxpublicstaticdecimalCalcTax(EmployeeE)return0.08m*E.Salary;3 3、声明索引器、声明索引器 。由于静态成员函数存在于类一级,并且不是对象的一部分,。由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有因此没有 this this 指针。在静态方法中引用指针。在静态方法中引用 this this 是错误的。是错误的。c#c#中中thisthis的用法的用法 1313静态类静态
15、类l类可以声明为类可以声明为staticstatic的,以指示它的,以指示它仅包含仅包含静态成员。静态成员。不不能使用能使用newnew关键字创建静态类的实例。关键字创建静态类的实例。静态类在加载包静态类在加载包含该类的程序或命名空间时由含该类的程序或命名空间时由 .NET Framework.NET Framework 公共语言运公共语言运行库行库 (CLR)(CLR)自动加载。自动加载。l使用静态类来包含不与特定对象关联的方法。例如,创建一使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法,组不操作实例数据并且不与代码中的特定对象关联的方
16、法,这种情况下应该使用静态类来包含那些方法。这种情况下应该使用静态类来包含那些方法。l静态类的主要功能如下:静态类的主要功能如下:它们仅包含静态成员。它们不能被实例化。它们是密封的。它们不能包含实例构造函数(C#编程指南)。1414使用静态类的优点在于,编译器能够执行检查以确保不致偶使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实例。然地添加实例成员。编译器将保证不会创建此类的实例。静态类是密封的,因此不可被继承。静态类不能包含构造函静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态数,但仍
17、可声明静态构造函数以分配初始值或设置某个静态状态状态。使用静态类作为不与特定对象关联的方法的组织单元。此外,使用静态类作为不与特定对象关联的方法的组织单元。此外,静态类能够使实现更简单、迅速,因为不必创建对象就能调静态类能够使实现更简单、迅速,因为不必创建对象就能调用其方法。以一种有意义的方式组织类内部的方法(例如用其方法。以一种有意义的方式组织类内部的方法(例如 System System 命名空间中的命名空间中的 Math Math 类的方法)是很有用的。类的方法)是很有用的。静态类静态类1515static class CompanyInfo static class CompanyIn
18、fo public static string GetCompanyName()public static string GetCompanyName()return CompanyName;return CompanyName;public static string GetCompanyAddress()public static string GetCompanyAddress()return CompanyAddress;return CompanyAddress;/./.静态类静态类16164.1.2 4.1.2 构造函数构造函数 作用:作用:构造函数是一个特殊的方法,用于在建立对象
19、时构造函数是一个特殊的方法,用于在建立对象时为对象分配存储空间为对象分配存储空间,对数据成员进行初始化。对数据成员进行初始化。好处:好处:确保每一个对象在被使用之前都适当地进行了初始化确保每一个对象在被使用之前都适当地进行了初始化的动作。的动作。构造函数特点:构造函数特点:1)1)每个类至少有一个构造函数。若程序代码中没有构造函每个类至少有一个构造函数。若程序代码中没有构造函数则系统会自动提供一个默认的构造函数。数则系统会自动提供一个默认的构造函数。2)2)一个构造函数总是和它的类名相同。一个构造函数总是和它的类名相同。3)3)构造函数不包含任何返回值。构造函数不包含任何返回值。4)4)构造函
20、数总是构造函数总是publicpublic的。的。一般在构造函数中作初始化工作,对于执行过程用时比较长一般在构造函数中作初始化工作,对于执行过程用时比较长的程序代码,最好不要放在构造函数中。的程序代码,最好不要放在构造函数中。5 5)必须使用操作符)必须使用操作符 new new 来调用一个构造函数来调用一个构造函数17174.1.2 4.1.2 构造函数(续)构造函数(续)1 1、默认构造函数、默认构造函数(1 1)如果在类中不定义构造函数,系统会提供一个默认的构)如果在类中不定义构造函数,系统会提供一个默认的构造函数。造函数。(2 2)默认构造函数没有参数。)默认构造函数没有参数。(3 3
21、)默认构造函数自动将非静态成员初始化为:)默认构造函数自动将非静态成员初始化为:数值型数值型:如如intint、doubledouble等,初始化为等,初始化为0 0。boolbool类型:初始化为类型:初始化为false.false.引用类型:初始化为引用类型:初始化为nullnull。(4 4)如果自己定义了类的构造函数,则所有初始化工作由编)如果自己定义了类的构造函数,则所有初始化工作由编程者自己完成。程者自己完成。18184.1.2 4.1.2 构造函数(续)构造函数(续)2.2.重载构造函数重载构造函数 有时候可能会遇到这样的情况:在一个类中的多个方有时候可能会遇到这样的情况:在一个
22、类中的多个方法中都要用到某一个数据成员,而该成员值必须从其他类法中都要用到某一个数据成员,而该成员值必须从其他类中传递过来。这时,无参数的构造函数就不能胜任了,解中传递过来。这时,无参数的构造函数就不能胜任了,解决这个问题最好的办法就是:重载(决这个问题最好的办法就是:重载(OverloadingOverloading)构造函)构造函数。数。19194.1.2 4.1.2 构造函数(续)构造函数(续)using System;using System;using System.Collections.Generic;using System.Collections.Generic;using
23、System.Text;using System.Text;namespace OverloadingExamplenamespace OverloadingExample class Program class Program public Program()public Program()Console.WriteLine(null);Console.WriteLine(null);20204.1.2 4.1.2 构造函数(续)构造函数(续)public Program(string str)public Program(string str)Console.WriteLine(str);
24、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();2121复制构造函数复制构造函数 某些编程语言的类提供了复制构造函数,即从当前类实例某些编程语言的类提供了复制构造函数,即从当前类实例构造一个新的类实例。在构
25、造一个新的类实例。在C#C#编程语言中,没有提供复制构造函编程语言中,没有提供复制构造函数,如果要实现复制构造的功能,就必须自行编写这样的构造数,如果要实现复制构造的功能,就必须自行编写这样的构造函数。函数。C#C#复制构造函数仍然属于构造函数,不同的是以类复制构造函数仍然属于构造函数,不同的是以类本身作为参数的数据类型。本身作为参数的数据类型。调用复制构造函数时,参数必须是已经创建的类实例。调用复制构造函数时,参数必须是已经创建的类实例。Contact c1=new Contact(lisi);Contact c1=new Contact(lisi);Contact c2=new Conta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 面向 对象 编程 基础

限制150内