《C# 第四章 封装抽象.ppt》由会员分享,可在线阅读,更多相关《C# 第四章 封装抽象.ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、幻灯片幻灯片1(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程面向对象编程面向对象编程C#幻灯片幻灯片2(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程在本章中,您将学习在本章中,您将学习:定义抽象和封装定义抽象和封装定义抽象和封装定义抽象和封装使用访问指定符实现封装使用访问指定符实现封装使用访问指定符实现封装使用访问指定符实现封装使用方法使用方法使用方法使用方法目标目标幻灯片幻灯片3(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程封装和抽象是任何面向对象编程语言的重要封装和
2、抽象是任何面向对象编程语言的重要特性。特性。抽象涉及仅抽取相关的信息。抽象涉及仅抽取相关的信息。封装涉及将一个或多个组件打包在一起。封装涉及将一个或多个组件打包在一起。介绍抽象和封装介绍抽象和封装幻灯片幻灯片4(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程封装从字面上解释为封装从字面上解释为“包围或者密封包围或者密封”。封装定义成将物理或逻辑包中的一个或多个封装定义成将物理或逻辑包中的一个或多个项放入封套的过程。项放入封套的过程。它防止对不需要的信息的访问。它防止对不需要的信息的访问。定义封装定义封装幻灯片幻灯片5(共(共41张)张)第第4章章Ver.
3、1.0使用使用C#进行面向对象编程进行面向对象编程访问指定符定义一定范围的类成员。访问指定符定义一定范围的类成员。类成员引用类中的变量和函数。类成员引用类中的变量和函数。程序可以有一个或多个类。程序可以有一个或多个类。您可能希望类的某些成员能够被其他类访问。您可能希望类的某些成员能够被其他类访问。但是,您也可能不希望类的某些成员被类之外但是,您也可能不希望类的某些成员被类之外的其他类访问。的其他类访问。使用访问指定符实现封装使用访问指定符实现封装幻灯片幻灯片6(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程C#C#支持以下访问指定符:支持以下访问指定符:
4、public public private private protected protected internalinternalprotected internalprotected internal访问指定符的类型访问指定符的类型幻灯片幻灯片7(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程修饰符修饰符说说 明明public所属类的成员以及非所属类的成员都所属类的成员以及非所属类的成员都可以访问可以访问internal当前程序集可以访问当前程序集可以访问private只有只有所属类的成员所属类的成员才能访问才能访问protected 所属类或派生自
5、所属类的类型可以访所属类或派生自所属类的类型可以访问问幻灯片幻灯片8(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程Teacher 类private 成员protected 成员public 成员internal 成员Student 类只有 Student 类在 Teacher 类都在同一程序集中,才可访问internal成员不可访问不可访问可以访问幻灯片幻灯片9(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程 class Program static void Main(string args)students
6、stu=new students();stu.name=cy;stu.age=12;private class students public string name;string age;幻灯片幻灯片10(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程 class Program:student static void Main(string args)Program p=new Program();p.name=cy;p.addr=西南石油大学西南石油大学;class student protected string name;string addr
7、;student p=new student();/?幻灯片幻灯片11(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程问题描述:问题描述:编写一个能够计算长方形和矩形面积的程序。编写一个能够计算长方形和矩形面积的程序。活动:使用访问指定符计算面积和体积活动:使用访问指定符计算面积和体积幻灯片幻灯片12(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程方法由一个或多个程序语句组成,通过引用方法由一个或多个程序语句组成,通过引用方法名能够执行方法。方法名能够执行方法。要使用方法,您需要:要使用方法,您需要:定义方法定义方
8、法调用方法调用方法使用方法使用方法幻灯片幻灯片13(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程定义方法定义方法定义方法意味着声明其结构的元素。定义方法意味着声明其结构的元素。请注意定义方法的语法:请注意定义方法的语法:Method(Parameter List)Name(Parameter List)Method BodyMethod Body 幻灯片幻灯片14(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程定义方法(续)定义方法(续)方法声明的元素包括方法名、参数列表、返方法声明的元素包括方法名、参数列表、返
9、回类型和方法主体。回类型和方法主体。以下是方法的元素:以下是方法的元素:访问指定符访问指定符返回类型返回类型 方法名方法名 参数列表参数列表 方法主体方法主体 让我们了解方法声明的每个元素。让我们了解方法声明的每个元素。幻灯片幻灯片15(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程定义方法(续)定义方法(续)定义方法意味着声明其结构的元素。定义方法意味着声明其结构的元素。请注意定义方法的语法:请注意定义方法的语法:(Parameter List)(Parameter List)Method Body Method Body 确定能够访问变量或方确定能够
10、访问变量或方法的其他类的范围。法的其他类的范围。幻灯片幻灯片16(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程定义方法意味着声明其结构的元素。定义方法意味着声明其结构的元素。请注意定义方法的语法:请注意定义方法的语法:Method (Parameter List)Name(Parameter List)Method BodyMethod Body 定义方法(续)定义方法(续)方法能够返回任何类方法能够返回任何类型的值。型的值。如果方法不返回任何如果方法不返回任何值,则使用空作为返值,则使用空作为返回类型。回类型。幻灯片幻灯片17(共(共41张)张)第第
11、4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程定义方法意味着声明其结构的元素。定义方法意味着声明其结构的元素。请注意定义方法的语法:请注意定义方法的语法:(Parameter List)(Parameter List)Method BodyMethod Body 定义方法(续)定义方法(续)这是唯一的标识并且是区分大小写的。方法名不能与变量名或类中声明的其他非方法项相同。幻灯片幻灯片18(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程定义方法意味着声明其结构的元定义方法意味着声明其结构的元素。素。请注意定义方法的语法:请注意定义方法的语
12、法:(Parameter List)(Parameter List)Method BodyMethod Body 定义方法(续)定义方法(续)用于传递和接收来自方用于传递和接收来自方法的数据。它在圆括号法的数据。它在圆括号之间。即使没有参数,之间。即使没有参数,也要有圆括号。也要有圆括号。幻灯片幻灯片19(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程定义方法意味着声明其结构定义方法意味着声明其结构的元素。的元素。请注意定义方法的语法:请注意定义方法的语法:Return (Parameter List)Name(Parameter List)Method
13、 BodyMethod Body 定义方法(续)定义方法(续)包含完成要求操作所包含完成要求操作所需的指令集。需的指令集。幻灯片幻灯片20(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程定义方法后,您可以通过调用它来执行。定义方法后,您可以通过调用它来执行。您可以通过方法名调用它。您可以通过方法名调用它。方法名后跟圆括号,即使方法调用没有参数,方法名后跟圆括号,即使方法调用没有参数,圆括号还是要保留,如以下示例所示:圆括号还是要保留,如以下示例所示:MethodName();MethodName();调用方法调用方法幻灯片幻灯片21(共(共41张)张)第
14、第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程以下是调用方法的示例:以下是调用方法的示例:using System;using System;class Calculatorclass Calculator public public intint AddNumber(intAddNumber(int num1,num1,intint num2)num2)intint result;result;result=num1+num2;result=num1+num2;return result;return result;调用方法(续)调用方法(续)幻灯片幻灯片22(共(共41
15、张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程static void static void Main(stringMain(string argsargs)Calculator cal=new Calculator();Calculator cal=new Calculator();/The following statement is calling the/The following statement is calling the/AddNumberAddNumber method and passing 10 and method and passing
16、 10 and/20 as the parameter list./20 as the parameter list.intint value=cal.AddNumber(10,20);value=cal.AddNumber(10,20);Console.WriteLine(TheConsole.WriteLine(The result is0,value);result is0,value);Console.ReadLineConsole.ReadLine();();调用方法(续)调用方法(续)幻灯片幻灯片23(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对
17、象编程递归调用递归调用N!幻灯片幻灯片24(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程也可以用参数来声明方法。考虑用参数声明也可以用参数来声明方法。考虑用参数声明方法的例子:方法的例子:void DisplayResult(int result)void DisplayResult(int result)/.当使用参数声明方法时,这些方法应该使用当使用参数声明方法时,这些方法应该使用参数来调用。带有参数的方法是通过使用以参数来调用。带有参数的方法是通过使用以下机制传递值被调用的:下机制传递值被调用的:值值引用引用:ref:ref输出输出:out:ou
18、t使用带参数的方法使用带参数的方法幻灯片幻灯片25(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程值传递值传递的参数在内存中创建一个副本。以下的参数在内存中创建一个副本。以下示例显示值传递的参数:示例显示值传递的参数:void CalculateSum(int num1,int num2)void CalculateSum(int num1,int num2)/void Accept()void Accept()int val1=10;int val1=10;int val2=2;int val2=2;CalculateSum(val1,val2);Ca
19、lculateSum(val1,val2);使用带参数的方法(续)使用带参数的方法(续)幻灯片幻灯片26(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程 class CzMath public void Swap(double a,double b)double temp=a;a=b;b=temp;Console.WriteLine(a=0 b=1,a,b);class Program static void Main(string args)double a=100;double b=150;CzMath c=new CzMath();c.Swap(a
20、,b);Console.WriteLine(a=0,a);Console.WriteLine(b=0,b);Console.ReadKey();幻灯片幻灯片27(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程引用:引用:引用传递的参数不在内存中创建变量的独引用传递的参数不在内存中创建变量的独立副本。引用参数存储传递的数据成员的内存地址。立副本。引用参数存储传递的数据成员的内存地址。以下示例显示引用传递的参数:以下示例显示引用传递的参数:void CalculateSum(ref int num1,ref int num2)void CalculateSu
21、m(ref int num1,ref int num2)/void Accept()void Accept()int val1=10;int val1=10;int val2=2;int val2=2;CalculateSum(ref val1,ref val2);CalculateSum(ref val1,ref val2);使用带参数的方法(续)使用带参数的方法(续)幻灯片幻灯片28(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程 class CzMath public void Swap(ref double a,ref double b)doub
22、le temp=a;a=b;b=temp;Console.WriteLine(a=0 b=1,a,b);class Program static void Main(string args)double a=100;double b=150;CzMath c=new CzMath();c.Swap(ref a,ref b);Console.WriteLine(a=0,a);Console.WriteLine(b=0,b);Console.ReadKey();幻灯片幻灯片29(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程 class Program pu
23、blic static string s;static void F(ref string a,ref string b)s=one;a=two;b=three;Console.WriteLine(a=0 b=1 s=2,a,b,s);static void g()F(ref s,ref s);static void Main(string args)g();Console.ReadKey();幻灯片幻灯片30(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程输出参数用于将值从方法中传递出来。以下示例显示输输出参数用于将值从方法中传递出来。以下示例显示输输
24、出参数用于将值从方法中传递出来。以下示例显示输输出参数用于将值从方法中传递出来。以下示例显示输出传递的参数:出传递的参数:出传递的参数:出传递的参数:void CalculateSum(ref int num1,ref int num2,out int void CalculateSum(ref int num1,ref int num2,out int result)result)result=num1+num2;result=num1+num2;void Accept()void Accept()int val1=10;int val1=10;int val2=2;int val2=2;i
25、nt recieveVal;int recieveVal;CalculateSum(ref val1,ref val2,out CalculateSum(ref val1,ref val2,out recieveValrecieveVal););使用带参数的方法(续)使用带参数的方法(续)幻灯片幻灯片31(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程using System;class Test static void Divide(int a,int b,out int result,out int remainder)result=a/b;rema
26、inder=a%b;static void Main()for(int i=1;i 10;i+)for(int j=1;j 10;j+)int ans,r;Divide(i,j,out ans,out r);Console.WriteLine(0/1=2r3,i,j,ans,r);实参可以不初始化,而在方法里初始化实参可以不初始化,而在方法里初始化幻灯片幻灯片32(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程问题描述:问题描述:编写一个能够在方法中使用引用类型的编写一个能够在方法中使用引用类型的参数交换数字的程序。参数交换数字的程序。演示:使用带参数的
27、方法交换两个数字演示:使用带参数的方法交换两个数字幻灯片幻灯片33(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程课堂练习课堂练习4.34 练习练习1、练习、练习2幻灯片幻灯片34(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程静态变量静态变量关键字:关键字:staticstatic静态变量在函数执行完成后不会消失,在整个静态变量在函数执行完成后不会消失,在整个程序中会保留其值。程序中会保留其值。静态变量可以在成员函数或类定义之外初始化静态变量可以在成员函数或类定义之外初始化staticstatic意味着,对于类的
28、所有对象,内存中仅意味着,对于类的所有对象,内存中仅存在一份静态变量的副本存在一份静态变量的副本,不能进行实例化。不能进行实例化。不需创建类的实例就能获取静态变量的值不需创建类的实例就能获取静态变量的值如果对类应用如果对类应用 static static 关键字,则该类的所有关键字,则该类的所有成员都必须是静态的。成员都必须是静态的。幻灯片幻灯片35(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程静态静态类与非静态类基本相同,但存在一类与非静态类基本相同,但存在一个区别:静态类不能实例化。也就是说,个区别:静态类不能实例化。也就是说,不能使用不能使用 n
29、ewnew 关键字创建静态类类型的关键字创建静态类类型的变量。变量。因为没有实例变量,所以要使用因为没有实例变量,所以要使用类名本身访问静态类的成员。类名本身访问静态类的成员。幻灯片幻灯片36(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程静态类的主要特性:静态类的主要特性:仅包含静态成员仅包含静态成员 无法实例化无法实例化是密封的是密封的不能包含不能包含实例构造函数实例构造函数幻灯片幻灯片37(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程public class MyBaseC public static in
30、t x=100;若要引用静态成员若要引用静态成员 x,请使用完全限定名,请使用完全限定名,如下:如下:MyBaseC.x 演示演示4.264.26幻灯片幻灯片38(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程静态函数可以访问静态变量静态函数可以访问静态变量在一个静态函数中直接调用其他函数,在一个静态函数中直接调用其他函数,则这些函数也必须为静态的则这些函数也必须为静态的静态函数静态函数幻灯片幻灯片39(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程 class StaticExamplepublic static
31、 int s;public void count()s+;public static int display()return s;class runpublic static void Main()StaticExample s=new StaticExample();s.count();s.count();s.count();Console.WriteLine(is 0:,StaticExample.display();幻灯片幻灯片40(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程问题描述:问题描述:John 是是 Zed Axis Technolo
32、gy 的软件开的软件开发者,他需要检查函数调用的次数。同时,发者,他需要检查函数调用的次数。同时,要求他创建一个函数要求他创建一个函数“CountFunction”,请帮助,请帮助 John 完成此任务。完成此任务。幻灯片幻灯片41(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程课堂练习课堂练习4.34 练习练习3、练习、练习4幻灯片幻灯片42(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程在本章中,您学习了:在本章中,您学习了:抽象是为了保留仅与特定用途有关的信息而减抽象是为了保留仅与特定用途有关的信息而减少信息
33、内容的过程。少信息内容的过程。封装是隐藏某个对象的与其基本特性没有很大封装是隐藏某个对象的与其基本特性没有很大关系的所有详细信息的过程。关系的所有详细信息的过程。访问指定符用于确定其他类或函数是否可以访访问指定符用于确定其他类或函数是否可以访问特定类的成员变量和函数。问特定类的成员变量和函数。公共访问指定符允许类向其他函数和对象显示公共访问指定符允许类向其他函数和对象显示其成员变量和成员函数。其成员变量和成员函数。专用访问指定符允许类隐藏其成员变量和成员专用访问指定符允许类隐藏其成员变量和成员函数,使其他类函数和对象不能访问它们。函数,使其他类函数和对象不能访问它们。小结小结幻灯片幻灯片43(
34、共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程受保护的访问指定符允许类隐藏其成员变量和受保护的访问指定符允许类隐藏其成员变量和成员函数,使其他类对象和函数不能访问它们,成员函数,使其他类对象和函数不能访问它们,就像执行继承时的专用访问指定符。就像执行继承时的专用访问指定符。方法由一条或多条程序语句组成,引用方法名方法由一条或多条程序语句组成,引用方法名可以执行方法。可以执行方法。定义方法意味着声明其结构的元素。定义方法意味着声明其结构的元素。可以与方法一起使用的访问指定符是:公共、可以与方法一起使用的访问指定符是:公共、受保护、内部、受保护的内部和专用。
35、受保护、内部、受保护的内部和专用。参数使得信息能够传入和传出方法。当您定义参数使得信息能够传入和传出方法。当您定义一个方法时,可以在圆括号中包括一列参数。一个方法时,可以在圆括号中包括一列参数。小结(续)小结(续)幻灯片幻灯片44(共(共41张)张)第第4章章Ver.1.0使用使用C#进行面向对象编程进行面向对象编程可以使用以下任何一个参数类型来传递参数:可以使用以下任何一个参数类型来传递参数:值值引用引用输出输出通过值传递是通过值传递是 C#C#中传递参数的缺省机制。中传递参数的缺省机制。引用参数是对数据成员的内存位置的引用。引用参数是对数据成员的内存位置的引用。输出参数类似于引用参数,但是它们只将数据输出参数类似于引用参数,但是它们只将数据从方法中传出,而不传入方法。从方法中传出,而不传入方法。返回语句使方法能够立即返回给调用者。返回语句使方法能够立即返回给调用者。小结(续)小结(续)