第4章面向对象基础ppt课件.ppt

上传人:小飞机 文档编号:2104797 上传时间:2023-01-10 格式:PPT 页数:101 大小:1.84MB
返回 下载 相关 举报
第4章面向对象基础ppt课件.ppt_第1页
第1页 / 共101页
第4章面向对象基础ppt课件.ppt_第2页
第2页 / 共101页
第4章面向对象基础ppt课件.ppt_第3页
第3页 / 共101页
第4章面向对象基础ppt课件.ppt_第4页
第4页 / 共101页
第4章面向对象基础ppt课件.ppt_第5页
第5页 / 共101页
点击查看更多>>
资源描述

《第4章面向对象基础ppt课件.ppt》由会员分享,可在线阅读,更多相关《第4章面向对象基础ppt课件.ppt(101页珍藏版)》请在三一办公上搜索。

1、第4章 面向对象基础,类与对象构造方法,this关键字static关键字,让IT教学更简单,让IT学习更有效,面向对象是在对真实系统建模的基础上的一个软件开发方法。面向对象的程序由类和对象组成。让我们了解这些术语类和对象。,面向对象的方法,Toyota Camry,Suzuki Reno,Honda Acura,类,对象,现实世界中所有的事物都是对象对象都具有某些特征,并展现某些行为,长度、宽度、颜色、速度、类型等是对象的属性,属性值表明了对象的状态,对象,对象的行为(方法),汽车的起动、加速、减速、停止等是对象自身的动作称为对象的方法,对象,属性,型号,价格,里程,行为,起动,停车,行驶,属

2、性,车轮数量,档的数量,行为,加速,换档,刹车,属性,名称,颜色,品种,行为,摇尾巴,吃东西,犬 吠,通过消息实现对象交互,注意:通过方法调用实现消息发送,对象从文字上理解为“具体的事情”,人的感观能够感觉到它。对象具有以下特性:对象有状态(属性和值)对象可以显示行为(自身行为)对象有一个唯一的身份(标识),面向对象的基础,类是具有相同属性和方法的对象的抽象(即对象的共性)。在计算机中类就是一种数据结构,是一种特定的数据组织形式。它包含属性;方法。,4.1 面向对象的概念,什么是面向对象?,面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的

3、联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。,面向对象的三大特征,1、封装性,封装是面向对象的核心思想,它将对象的特征和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。例如,用户使用电脑,只需要使用手指敲键盘就可以了,无需知道电脑内部是如何工作的,即使用户可能碰巧知道电脑的工作原理,但在使用时,并不完全依赖电脑工作原理这些细节。,4.1 面向对象的概念,2、继承性,继承性主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。例如,有一个表示汽车的类,该类中描述了汽车的普通特性和功能,

4、而表示轿车的类中不仅应该包含汽车的特性和功能,还应该增加轿车特有的功能,这时,可以让轿车类继承汽车类,在轿车类中单独添加表示轿车特性的方法就可以了。,3、多态性,多态性指的是同一操作用于不同的对象,会产生不同的执行结果。例如,当听到“Cut”这个单词时,理发师的表现是剪发,演员的行为表现是停止表演,不同的对象,所表现的行为是不一样的。,程序设计语言中如何实现封装?如何创建类和对象?,类和对象的创建 举例学生管理系统 中对学生进行管理,一个学生有学号、姓名、年龄,能实现对学生信息的赋值和输出编写一个students类,其中有3个数据成员有学号、姓名、年龄,以及若干成员函数。同时编写主函数使用这个

5、类,实现对学生数据的赋值和输出。要求:使用成员函数实现对数据的输出;使用函数实现对数据的输入。,访问修饰符 class 类名 访问修饰符 成员;对象创建类名 对象名;对象名=new 类名(),4.2 类与对象,4.2.1 类的定义,什么是类?,如何定义一个类?,类是对象的抽象,它用于描述一组对象的共同特征和行为。类中可以定义字段和方法,其中字段用于描述对象的特征,方法用于描述对象的行为。,在下面这段代码中定义了一个Person类,其中,Person是类名,age是字段,Speak()是方法。在Speak()方法中可以直接访问age字段。,public class Person/定义Person

6、类,public为访问修饰符 public int age;/定义int类型的字段age public void Speak()/定义 Speak()方法 Console.WriteLine(大家好,我今年+age+岁!);,4.2 类与对象,4.2.2 对象的创建与使用,应用程序想要完成具体的功能,仅有类是远远不够的,还需要根据类创建实例对象。在C#程序中可以使用new关键字来创建对象,具体格式如下:例如创建Person类的实例,具体代码如下:上面的代码中,“new Person()”用于创建Person类的一个实例对象,“Person p”则是声明了一个Person类型的变量p。中间的等号

7、用于将Person对象在内存中的地址赋值给变量p,这样变量p便持有了Person对象的引用。,类名 对象名称=new 类名();,Person p=new Person();,4.2 类与对象,4.2.2 对象的创建与使用,内存中变量p和对象之间的引用关系如下图所示。在创建Person对象后,可以通过对象的引用来访问对象所有的成员,具体格式如下:,对象引用.对象成员,课堂练习,编程程序定义日期类型Date。要求有以下面成员:年、月、日变量(私有),一个实现年、月、日单独的输入void input(int year,int month,int day),实现打印方法成员,该方法要按照“XXXX年

8、XX月XX日”格式输出日期。,访问修饰符用法,让我们举例来了解它们的用法,Abstract.prj,Internal在程序集内使用,Protected Internal程序集的子类也中可见,Default与private等价,访问修饰符,在上一个小节中出现的关键字private和public都属于修饰符,用于限定外界对类和方法的访问权限。在C#中,访问修饰符共有四种,分别是public、protected、internal、private,使用这四种访问修饰符可以组成五个可访问级别,具体如下:public:最高访问级别,访问不受限制。protected:保护访问级别,受保护的成员可由自身及派生

9、类访问。internal:内部访问级别,只有在同一程序集中,内部类型或者成员才可访问。protected internal:内部保护级别,访问仅限于当前程序集,可由自身及派生类访问。private:私有访问,最低访问级别,私有成员只有在声明它们的类和结构中才可访问。,思考类的私有成员的值,如何在类外 访问?,课后思考,使用private修饰符后,使用者便无法直接访问它们,通过什么办法采用获得private修饰的成员变量的值提示:1、通过方法返回获取值 2、通过建立property(属性),4.2 类与对象,4.2.4 属性,在设计一个类时,应该对字段的访问作出一些限定,不允许外界随意访问,这时

10、就可以使用属性。在程序中,使用属性封装字段时,需要将字段访问级别设为private,并通过属性的get和set访问器来对字段进行读写操作,从而保证类内部数据安全。读写属性即同时有get、set访问器的属性,具体语法格式如下:,属性的应用,属性的分类,1、读写属性,public 数据类型 属性名 get/返回参数值 set/设置隐式参数value给字段赋值,类的属性,类的属性使用属性声明:class 类名 修饰符 数据类型 属性名 get;set;,课堂练习,定义日期类型Date。要求有以下面成员:年(myear)、月(mmonth)、日(mday)变量(私有),定义 年,月,日的属性,一个实现

11、年、月、日单独的输入void input(int year,int month,int day),实现打印方法成员,该方法要按照“XXXX年XX月XX日”格式输出日期。主函数 需要通过属性赋值的方式实现 对 私有数据成员的访问。,注意:属性 一般对应一个私有数据成员 get 方法中的 return返回一个值,4.2 类与对象,4.2.4 属性,只读属性即只有get访问器,具体语法格式如下:,2、只读属性,public 数据类型 属性名 get/返回参数值,只写属性即只有set访问器,具体语法格式如下:,3、只写属性,public 数据类型 属性名 set/设置隐式参数value给字段赋值,输入

12、一个正整数repeat(0repeat10),做repeat次下列运算:输入一个正整数n,再输入n个整数,将它们从大到小排序后输出。输入3(repeat=3)4 5 1 7 63 1 2 35 5 4 3 2 1 输出7 6 5 1 3 2 15 4 3 2 1,定义一个矩形类,有长、宽两个属性,有成员函数计算矩形的面积。要求从键盘中输入矩形的长和宽,输出矩形的长和宽及面积,4.3 类成员-方法,方法的使用,方法由一个或多个程序语句组成,通过引用方法名能够执行方法。要使用方法,您需要:定义方法调用方法,方法的使用,方法的定义格式,返回值类型,方法的使用,方法的定义格式,返回值类型,return

13、 返回值/有返回值加上return,方法的使用,方法的定义格式,返回值类型,参数类型 参数名1,参数类型 参数名2,.如果没有参数()括号不能省略,方法的使用,调用方法定义方法后,您可以通过调用它来执行。您可以通过方法名调用它。方法名后跟圆括号,即使方法调用没有参数,圆括号还是要保留,如以下示例所示:MethodName();,以下是调用方法的示例:using System;class Calculator public int AddNumber(int num1,int num2)int result;result=num1+num2;return result;static void M

14、ain(string args)Calculator cal=new Calculator();/The following statement is calling the/AddNumber method and passing 10 and/20 as the parameter list.int value=cal.AddNumber(10,20);Console.WriteLine(The result is 0,value);Console.ReadLine();,/方法的定义,/方法体,/方法返回值,与返回类型对应,/创建对象,/调用对象的方法,返回值存在value变量中,方法的

15、使用,带参数方法-参数的传递机制值(传入数据)引用(传入传出数据)输出(传出输出),值方式传递(值传递的形参在内存中创建一个副本),Class Calculator void AddOne(int var)var+;public static void Main()Calculator obj=new Calculator();int number=6;obj.AddOne(number);Console.WriteLine(number);,Number6,AddOne:var6调用前,AddOne:var7调用后,Main()函数,Addone()函数,引用方式传递(形参和实参共用实参变量

16、,形参实际上是实参的别名),class Calculatorvoid CalculateSum(ref int num1,ref int num2)num2=num1+num2;Static void Main()int val1=10;int val2=2;CalculateSum(ref val1,ref val2);Console.WriteLine(“0,1”,val1,val2);,数据类型前加上ref 表示采用引用方式传递,调用时加上ref,引用方式传递(形参和实参共用实参变量,形参实际上是实参的别名),class Calculatorvoid CalculateSum(ref i

17、nt num1,ref int num2)num2=num1+num2;Static void Main()int val1=10;int val2=2;CalculateSum(ref val1,ref val2);Console.WriteLine(“0,1”,val1,val2);,Main(),10,2,var1,var2,引用方式传递(形参和实参共用实参变量,形参实际上是实参的别名),class Calculatorvoid CalculateSum(ref int num1,ref int num2)num2=num1+num2;Static void Main()int val1

18、=10;int val2=2;Calculator tt=new Calculator();tt.CalculateSum(ref val1,ref val2);Console.WriteLine(“0,1”,val1,val2);,Main(),10,2,var1,var2,CalculateSum完成,num1,num2,12,输出方式,输出参数用于将值从方法中传递出来,void CalculateSum(ref int num1,ref int num2,out int result)result=num1+num2;void Accept()int val1=10;int val2=2

19、;int recieveVal;CalculateSum(ref val1,ref val2,out recieveVal);,引用类型的参数,引用类型的参数 按引用传递,不需要使用ref和out关键字(string除外),课堂练习,编写程序,类中的方法使用引用方式实现数据的交换,方法的返回值为这两个数的和,通过输出参数形式返回两个数的积。并把结果输出,当声明方法中的参数不确定时,可以使用param数组,public int Adding_ArrayElement(params int List)int Total=0;foreach(int I in List)Total+=I;return

20、 Total;,注意:在参数列表中,param数组为最后一个参数,课堂练习,编写程序,类中的方法swap使用引用方式实现两个数据的交换,方法的返回值为这两个数的和,通过输出参数形式返回两个数的积。提示swap 需要 3个参数,多学一招,常用数学方法.NET Framework中提供许多常用的方法,其中数学方法在程序开发过程中是经常会用到的,数学方法定义在Math类中,下面列出了Math类部分常用的数学方法,具体如表3-1所示。,多学一招,常用数学方法 通过一个具体的案例来演示上述方法的使用,如例3-2所示。,方法的重载,在显实生活中,手机响铃,是手机的一个动作,但手机响铃可以发出不同的声音,也

21、就是说手机响铃可以有不同的形态,这就是多态静态多态:动态多态:,方法重载,操作符重载,运行时函数的不同形态,后期绑定,方法的重载,如何在计算机中表示这种不同形态呢?,using System;namespace Calmaxclass CalMaxpublic int Max(int num1,int num2)return num1num2?num1:num2;public float Max(float num1,float num2)/参数类型不同return num1num2?num1:num2;class MaxCalstatic int Main(string args1)CalM

22、ax cal=new CalMax();Console.WriteLine(0,cal.Max(5.4f,9.7f);Console.WriteLine(0,cal.Max(5,9);Console.ReadLine();return 0;,在上例中,类中有多个同名的函数,但函数的签名不同:参数的个数参数的类型参数顺序不同,称作:方法的重载,也就是类的静态多态,仅返回值不同的同名方法不是方法重载,是不允许的,y,public int Max(int num1,int num2)return num1num2?num1:num2;public float Max(float num1,float

23、 num2)/参数类型不同return num1num2?num1:num2;,public int Max(int num1,int num2)return num1num2?num1:num2;public float Max(int num1)/参数个数不同return num1num2?num1:num2;,public int Max(float num1,int num2)return num1num2?num1:num2;public float Max(int num1,float num2)/参数的顺序不同return num1num2?num1:num2;,多学一招,快速判

24、断方法重载 方法重载可以让程序变得更加灵活,要想在程序中快速的判断方法重载,可以按照以下步骤进行,具体如下:1、将方法名前面的修饰符、返回类型以及方法体去掉。2、将方法参数列表中的参数名去掉。3、将两个方法做比较,首先名称不相同一定不是重载方法,其 次如果名称相同,其他部分不相同的构成重载,相同的则不 是重载的方法。,多学一招,快速判断方法重载 接下来通过具体的代码来演示如何使用上述三个步骤判断方法重载,示例代码如下:,上述代码中定义了4个同名的方法,下面将方法中的方法体和方法名前面的修改符去掉,得到下面的的代码:,然后将参数列表中的参数名字去掉,得到下面的代码:,这样一来判断方法重载就非常容

25、易了,以上不相同的方法就可以构成重载。因此,方法3和方法4就不能构成方法重载。方法重载的关键因素是方法名和参数,在C#中由方法名和参数列表(参数的类型和顺序)组成的部分称为方法的签名,在判断方法是否构成重载的,只需比较方法的签名部分即可。,课堂练习,设计一个类,编写compare方法重载实现两个整数比较大小和两个字符比较大小,返回 true或false,课堂练习 说出 输出结果,提出问题,前面我们学习了类的方法,通过实例化对象并调用对象的方法给对象的成员变量赋初值,能不能在创建对象的同时给成员变量赋初值呢?,构造函数和析构函数,课前练习,定义1个学生类,具有string类型数据成员 id,na

26、me和int数据成员 age,通过void input(string id,string name,int age)给数据成员赋值,通过void display()输出数据成员的值并定义相应对象进行调用实现输入和输出操作,什么是构造函数,我们以一个例子来说明,4.4 构造方法,4.4.1 构造方法的定义,在一个类中定义的方法如果同时满足以下三个条件,该方法便是一个构造方法,具体如下:方法名与类名相同。在方法名的前面没有返回值类型的声明。在方法中不能使用return语句返回一个值。,4.4 构造方法,与普通方法一样,构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或

27、参数个数不同即可。在创建对象时,可以通过调用不同的构造方法来为不同的属性进行赋值。,4.4.2 构造方法的重载,结论,构造函数是当你创建一个类的实例的时候被调用的一种特殊的方法。构造函数被用于初始化类成员。构造函数的名字与包含它的类的名字一样。使用public关键字(允许初始化对象)构造函数无返回值默认构造函数(没有显式指明构造函数),静态构造函数,如何在创建对象的时候要初始化静态成员变量呢?,可以使用静态构造函数,结论,静态构造函数是无参构造函数静态构造函数无访问修饰符静态构造函数在运行时仅调用一次先调用静态构造函数,后调用非静态构造函数,析构函数,对象销毁时,将自动调用析构函数类仅有一个析

28、构函数 类名()对象的销毁由系统垃圾回收器自动完成,对象产生到销毁(对象的生命周期),using System;Namespace objects class cal public cal()Console.WriteLine(“Constructor Invoked”);cal()Console.WriteLine(“Destructor Invoked”);public static void Main(string args)Console.WriteLine(“Main()Begins”);cal c1=new cal();Console.WriteLine(“Inner Block

29、Begins”);cal c2=new cal();Console.WriteLine(“Inner Block ends”);Console.WriteLine(“Main()ends”);,第1步,第2步,第3步,第4步,第5步,第6步,第7步,第8步,class CalculateSquare int number;public void Square(int number)Console.WriteLine(number);number*=number;Console.WriteLine(number);Console.WriteLine(this.number);public Cal

30、culateSquare()number=10;Square(number);static void Main(string args)CalculateSquare cal=new CalculateSquare();Console.ReadLine();,课堂练习-输出结果,课堂练习-输出结果,class Calculate static int number1;public void Display(int number)Console.WriteLine(number);public Calculate()number1+;Display(number1);static Calcula

31、te()/静态构造函数先执行 number1=10;number1+;static void Main(string args)Calculate Cal1=new Calculate();Calculate Cal2=new Calculate();Console.ReadLine();,编程:定义日期类型Date。要求有以下面成员:年、月、日变量,重载的构造方法,一个实现年、月、日单独的输入,一个实现从系统时间里读出年月日(System.DateTime.Now.Year,System.DateTime.Now.Month,System.DateTime.Now.Day),并实现打印方法成

32、员,该方法要按照“XXXX年XX月XX日”格式输出日期。,课堂练习,已知一个名为MyRectangle的矩形类。类中有4个私有的整型成员变量,分别是矩形的左上角坐标(xUp,yUp)和右下角坐标(xDown,yDown);类中有三个成员函数:int getW():计算矩形的宽度;int getH():计算矩形的高度;Area():计算矩形的面积;完成类中的两个构造函数,其中,无参构造函数将矩形两个角的坐标均设为0。有参构造函数根据参数初始化举行两个顶点的坐标。编写主函数,创建2个对象(一个有参,一个无参),输出2个对象的宽度、高度和面积,静态变量与静态函数,Abstract1.prj,usin

33、g System;class Method public int i=5;public void addi()i=i+1;class test static void Main()Method a=new Method();a.addi();Method b=new Method();b.addi();Console.WriteLine(“0,1”,a.i,b.i);,/public static int i=5;,/Console.WriteLine(0,Method.i);,读程序写出输出结果,课堂讨论,改变一个对象间成员变量的值,会不会影响到另一个同类对象的值,结论:对象间成员变量的值是

34、独立的,互不影响,using System;class Method public int i=5;public void addi()i=i+1;class test static void Main()Method a=new Method();a.addi();Method b=new Method();b.addi();Console.WriteLine(“0,1”,a.i,b.i);,/public static int i=5;,/Console.WriteLine(0,Method.i);,读程序写出输出结果,结论,static 关键字定义的成员为静态成员,该成员属于类,而不属于

35、对象static 数据类型 成员名(方法名(参数列表)不能通过对象名.静态成员来访问类的静态成员,只能通过类名.成员名来访问类中定义了静态成员,不管对象创建没有,静态成员都存在静态成员包括:静态变量和静态方法,静态方法,using System;class Method public int i=5;public static void addi()i=i+1;class test static void Main()Method a=new Method();Console.WriteLine(Method.i);,/改为public static int i=5;,Method.addi(

36、);Method.addi();,讨论,静态方法的调用,通过类名.静态方法名,静态方法中如果要访问类成员,可不可以是非静态成员?,必须是静态成员(变量、方法),静态成员与非静态成员的区别,静态成员是属于类所有的,非静态成员则属于类的实例对象。非静态成员只能通过对象名称进行访问,并且对象成员互不影响静态成员只能通过类名进行访问静态方法不可以访问非静态成员,静态方法只能访问静态成员静态方法中定义的变量,是局部变量,可以在静态方法中使用,静态构造函数,如何在创建对象的时候要初始化静态成员变量呢?,可以使用静态构造函数,综合练习,定义一个学生类student,包含3个成员变量,用来保存学生的姓名nam

37、e、年龄age和学号no,有参和无参构造函数,用来初始化学生的姓名、年龄和学号。三个成员函数或属性,分别用来获取学生的姓名、年龄和姓名,void input(String na,int ag,String n)给数据成员赋值void print()输出学生信息。定义一个班级类,包括学生对象数组,学生个数count,最大分配个数maxsize,void add(student stu)增加学生信息到班级,void print()输出班级中所有学生信息 从标准输入读取学生信息,并增加到班级中,然后输出班级学生信息。,static关键字,静态构造方法,class StaticClass/声明静态字段

38、 public static string staticName;/定义静态构造方法 static StaticClass()staticName=LiMing;class Program18 static void Main(string args)/调用StaticClass的staticName静态字段 Console.WriteLine(我的名字是+StaticClass.staticName);Console.ReadKey();/停留在控制台界面,等待用户输入,例如下面这个案例,就演示了静态构造方法的使用。,结论,静态构造函数是无参构造函数静态构造函数无访问修饰符静态构造函数在运行

39、时仅调用一次先调用静态构造函数,后调用非静态构造函数,课堂练习,编写帐户类,具有账号ID(string),存款量initialDepositAmount(double),静态成员static int totalAccountNumber=0记录账户数目,创建每一账户设置初始化帐号ID为“000”,存款为0.00元,设计一变量统计账号生成的数目。,4.5 this关键字,通过this关键字可以明确地去访问一个类的属性,解决与局部变量名称冲突问题。,1、this访问属性,在类中调用自己的成员方法,也可以使用this关键字,通过“this.方法名”的方式调用。,2、this访问成员方法,构造方法在实

40、例化对象时会被.Net运行环境自动调用,因此,在程序中不能像调用其他方法一样去调用构造方法,但可以用“:this(参数1,参数2)”的形式来调用其他的构造方法。,3、this访问构造方法,装箱和拆箱装箱:值类型转换到对象操作 拆箱:对象转换为兼容的值类型操作,4.6 索引器,通常情况下,属性只能访问单一的字段,如果想访问多个数据成员,就需要使用索引器,索引器是类的特殊成员,它可以根据索引在多个数据成员中进行选择。索引器的语法与属性非常相似,能够让对象以类似数组的方式来存取。这样使程序看起来更为直观,更容易编写。索引器的定义方式与属性定义方式类似,其基本的语法格式如下所示:在上述语法格式中,使用

41、this关键字加索引类型 index的形式来创建一个索引器,在索引器中同样会使用get和set访问器,来获取属性值和设置属性值。,索引器的功能,修饰符 数据类型 this索引类型 index get/返回参数值 set/设置隐式参数value给字段赋值,4.7 垃圾回收,在C#中,当一个对象成为垃圾后仍会占用内存空间,时间一长,就会导致内存空间的不足。为了清除这些无用的垃圾对象,释放一定的内容空间,C#中引入了垃圾回收机制。在这种机制下,程序员不需要过多关心垃圾对象回收的问题,.Net运行环境会启动垃圾回收器将这些垃圾对象从内存中释放,从而使程序获得更多可用的内存空间。除了等待运行环境进行自动

42、垃圾回收,还可以通过调用GC.Collect()方法来通知运行环境立即进行垃圾回收。,4.9 嵌套类,在C#中,可以将类定义在另一个类的内部,被包含的类称作嵌套类,而包含嵌套类的类就称作外部类。实际上,嵌套类与普通类相似,只是被声明的位置比较特殊,致使其访问权限与引用方式与普通类有所区别,接下来,通过一个案例做具体以演示。,什么是嵌套类?,class Outer class Nesting/声明嵌套类 public int num=10;/定义OuterMethod方法 public void OuterMethod()Nesting nesting=new Nesting();/在外部类方法

43、中创建嵌套类的对象 Console.WriteLine(调用嵌套类的字段num=+nesting.num);/调用嵌套类的字段 class Program20 static void Main(string args)Outer outer=new Outer();outer.OuterMethod();Console.ReadKey();,4.10 匿名类,有时候某个类的实例只会用到一次,这时可以使用匿名类的方式创建实例,即无需显式定义一个类,就可以将一组只读属性封装到单个对象中。它的创建与使用都非常简单,接下来通过一个案例进行演示。,什么是匿名类?,class Program21 stat

44、ic void Main(string args)/创建匿名对象 var Anon=new Name=小明,Age=3,Sex=男;/在控制台输出匿名对象Anon的属性 Console.WriteLine(我的名字是:0岁,性别为:1,年龄是:2岁,Anon.Name,Anon.Sex,Anon.Age);Console.ReadKey();,4.11 对象初始化,在一个类中,通常是使用构造方法来为属性赋值,当一个类中属性过多时,不可能为每种情况都创建一个构造方法,此时可以使用对象初始化器来为属性赋值,对象初始化器的语法格式如下:从上述语法格式可以看出对象初始化器可以同时为类的多个属性赋值,从

45、而大大减少对象初始化的代码。,对象初始化的意义?,类名 变量名=new 类名()属性名=值,属性名=值;需要无参构造函数,本章详细介绍了面向对象的基础知识。首先介绍了什么是面向对象的思想,然后介绍了类与对象之间的关系,属性的作用,以及构造方法的定义与重载,this和static关键字的使用,最后介绍了嵌套类的定义以及匿名类等。熟练掌握好这些知识,有助于下一章内容的学习。,本章小结,TreeView树视图控件TreeView控件以树形结构的方式来显示数据。其目录的每个节点都有一个与之相关的TreeNode对象,每个TreeNode对象都包含一个Nodes和Level属性。通过TreeView控件可实现下图所示效果。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号