使用C#进行面向对象编程 第七章 类成员课件

上传人:我*** 文档编号:141372366 上传时间:2020-08-07 格式:PPT 页数:48 大小:100.50KB
返回 下载 相关 举报
使用C#进行面向对象编程 第七章 类成员课件_第1页
第1页 / 共48页
使用C#进行面向对象编程 第七章 类成员课件_第2页
第2页 / 共48页
使用C#进行面向对象编程 第七章 类成员课件_第3页
第3页 / 共48页
使用C#进行面向对象编程 第七章 类成员课件_第4页
第4页 / 共48页
使用C#进行面向对象编程 第七章 类成员课件_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《使用C#进行面向对象编程 第七章 类成员课件》由会员分享,可在线阅读,更多相关《使用C#进行面向对象编程 第七章 类成员课件(48页珍藏版)》请在金锄头文库上搜索。

1、1,第七章 类成员,2,本章内容,类的成员 数据成员 方法 构造函数 析构函数 this关键字 封装 属性,3,7.1 类的成员,类的主要成员包括两种类型,即描述状态的数据成员和描述操作的函数成员 数据成员包括成员变量、成员常量、事件 函数成员包括方法、属性、构造函数、析构函数、索引器、运算符,4,7.2 数据成员,成员变量 静态成员变量 成员常量,5,public class A public int data; public void fun() data=20; ,A a1=new A(); a1.fun(); System.Console.WriteLine(a1.data);,成员变

2、量是定义在类内部、方法之外的变量 修饰符 类型 成员变量名称 = 初值 ;,(1) 成员变量,6,public class A public int data=10; public void fun() int data=0; ,定义在方法中的变量只是局部变量,不是成员变量。类的成员变量和类中的局部变量可以重名。,7,public class A public static int data=10; ,(2)静态成员变量 具有static修饰符的成员变量就是静态成员变量。静态成员变量也称为类变量,它被该类所有对象共享。 (一)可以直接通过类名来访问静态成员变量。 形式:类名.静态成员变量,如果

3、没有显式的初始化 静态成员变量,则它会被 自动初始化。,System.Console.WriteLine(A.data);,调用,不需要创建对象,就可以访问静态成员变量。,8,(二)在同一类中访问静态成员变量时,可省略类名,注意:不能用对象直接访问静态成员变量,所有对象共享一个静态成员变量。,9,(3)成员常量,public class test public const int a=10; ,具有const修饰符的成员变量就是成员常量。成员常量的值必须在定义时就初始化,一旦定义就不可更改。,10,成员常量也是静态成员,访问时要通过类名访问,System.Console.WriteLine(t

4、est.a);,11,7.3 方法,方法的定义 参数的传递 方法的重载 静态方法,方法是定义在类中的函数。,12,(1)方法的定义,修饰符类型标识符,方法名(参数类型 形式参数1,),若干条语句 return 返回值;,返回值的类型 如果不返回值,则用void,局部变量, 可见性仅限于方法内部,一旦执行了return语句,则方法将结果返回给调用者,整个方法执行完毕。,13,(2)参数的传递,4种类型的形式参数: 值形参 引用形参 输出形参 形参数组,14,值形参,不带修饰符的形参是值形参 值形参相当于方法内的局部变量 在方法内对值形参的修改不会影响到实参,15,class Test stati

5、c void Swap(int x, int y) / 两数交换(值形参) int temp = x; x = y; y = temp; static void Main() int i = 1, j = 2; Console.WriteLine(Before swap, i = 0, j = 1, i, j); Swap(i, j); Console.WriteLine(After swap, i = 0, j = 1, i, j); Console.ReadLine(); ,16,class A public int i; class test static void Add(A a1)

6、a1.i = a1.i + 10; static void Main(string args) A a2 = new A(); Add(a2); System.Console.WriteLine(a2.i); System.Console.Read(); ,17,输出形参,用out修饰符声明的形参是输出形参,用于输出参数的传递 输出形参并不创建新的存储位置,它与对应的实参共用存储空间,18,class test static void Add(int num1,int num2,out int sum1) sum1 = num1 + num2; static void Main(string

7、args) int sum2; Add(1,2,out sum2); System.Console.WriteLine(sum2); System.Console.Read(); ,19,引用形参,用ref修饰符声明的形参是引用形参,用于输入和输出参数的传递 引用形参并不创建新的存储位置,它与对应的实参共用存储空间,20,class Test static void Swap(ref int x, ref int y) / 两数交换(引用形参) int temp = x; x = y; y = temp; static void Main() int i = 1, j = 2; Console

8、.WriteLine(Before swap, i = 0, j = 1, i, j); Swap(ref i, ref j); Console.WriteLine(After swap, i = 0, j = 1, i, j); Console.ReadLine(); ,输出 1 2 2 1,21,(3)方法的重载,overloading 同一类中可以定义多个名称相同的方法,但要求参数的类型或个数不同。,22,class test public int add(int a,int b) System.Console.WriteLine(add(int a,int b); return a+b

9、; public double add(double a,double b) System.Console.WriteLine(add(double a,double b); return a+b; public static void Main (String args) test t1=new test(); System.Console.WriteLine(t1.add(1,2); System.Console.WriteLine(t1.add(1.0,2.0); ,具体调用哪个方法由参数的类型及个数决定。,23,class test static int add(int a,int b

10、) System.Console.WriteLine(add(int a,int b); return a+b; static int add(int a,int b,int c) System.Console.WriteLine(add(int a,int b,int c); return a+b+c; public static void Main (String args) System.Console.WriteLine(add(1,2); System.Console.WriteLine(add(1,2,3); ,参数个数不同的重载方法,24,class test public in

11、t add(int a,int b=10) System.Console.WriteLine(add(int a,int b); return a+b; ,C#中的方法不支持默认参数,下列程序错误。可通过函数重载解决,25,(4)静态方法,具有static修饰符的方法就是静态方法。 静态方法调用形式: (1)情况1:在静态方法所属类之外调用 类名.静态方法 (2)情况2:在静态方法所属类之内调用可省略类名 静态方法 注意:不能用对象直接访问静态方法。,26,注意: 静态方法中不能直接访问同一类中的非静态成员,而必须先创建对象,再通过对象访问成员。下列程序是错误的。,public class t

12、est public static void fun1() fun2(); public void fun2() ,27,7.4 构造函数 虽然对象被创建时,对象的成员变量会被自动初始化。但有时候需要对成员变量进行动态的初始化。我们可以通过某一方法对成员变量进行初始化。 public class Person private int age; private int height; public void initialize(int a,int h) age=a;height=h; ,/每创建一个对象,都需要显式调用初始化函数,Person p1=new Person(); p1.initi

13、alize(20,175);,28,有一种机制,使得在定义对象时能够自动对成员变量进行初始化,而无需显式地调用某个初始化函数。 这种机制就是构造函数。 怎样定义构造函数 构造函数的调用时间 构造函数的重载,29,1 构造函数是一种特殊的方法,定义构造函数的方式与定义方法类似。 2 构造函数的名称与类的名称相同。 3 定义构造函数时不指定函数的返回值类型。,(1)怎样定义构造函数?,30,针对刚才的初始化问题,可通过构造函数解决 public class Person private int age; private int height; public Person(int a,int h)

14、age=a;height=h; ,Person p1=new Person(20,175);,31,在对象被创建时,系统将自动调用构造函数。 Person p1=new Person(); 上述语句一旦执行,系统将按顺序进行下列操作: (1)在堆中为对象分配内存 (2)按定义顺序对该对象所有成员变量进行自动初始化,如果成员变量定义时指定了初值,则按初值进行初始化。 (3)调用构造函数 (4)将引用变量p1指向堆中的对象,(2)构造函数的调用时间,32,栈内存,堆内存,p1,New Person(20,175) 产生的对象,5,10,0 x3000,栈内存,p1,New Person(20,17

15、5) 产生的对象,20,175,age,height,age,height,public class Person private int age=5; private int height=10; public Person(int a,int h) age=a;height=h; ,执行本程序后的内存变化过程,堆内存,Person p1=new Person(20,175);,33,构造函数可以重载,即在一个类里可以定义多个构造函数。,public class Person private int age; private int height; public Person() age=10;height=100; public Person(int a,int h) age=a;height=h; ,Person p1=new Person(); Person p2=new Person(20,175);,(3)构造函数的重载,34,如果程序员没有为类定义构造函数,则系统会自动为该类生成一个默认构造函数。该函数的参数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号