c#第6章 面向对象的程序设计4h

上传人:今*** 文档编号:107510567 上传时间:2019-10-19 格式:PPT 页数:51 大小:770.51KB
返回 下载 相关 举报
c#第6章 面向对象的程序设计4h_第1页
第1页 / 共51页
c#第6章 面向对象的程序设计4h_第2页
第2页 / 共51页
c#第6章 面向对象的程序设计4h_第3页
第3页 / 共51页
c#第6章 面向对象的程序设计4h_第4页
第4页 / 共51页
c#第6章 面向对象的程序设计4h_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《c#第6章 面向对象的程序设计4h》由会员分享,可在线阅读,更多相关《c#第6章 面向对象的程序设计4h(51页珍藏版)》请在金锄头文库上搜索。

1、面向对象的程序设计 Visual C# Programming,聊城大学 理工学院 曹银杰 caoyinjie,第六章:面向对象的程序设计,面向对象的最基本的特征是抽象性、封装性、继承性和多态性。 6.1 类的抽象与封装 6.2 数据成员属性 6.3 方法成员 6.4 类的继承性 6.5 类的多态性 6.6 委托类型 作业,6.1 类的抽象与封装,对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。 抽象:把具有相同属性和方法的对象划为一类,得到一个抽象的概念-类,如int是对所有整数的抽象。 封装:就是把对象的属性、方法、事件结合成一个独立的单位(类或结构)。 封装的意义在于

2、可以指定其每个成员对于该类(或结构)外部的可访问性,可将外部不使用的数据、方法隐藏起来,以减小编码错误或遭恶意利用的可能性。 C#提供了许多功能强大的类定义方式,如提供不同的访问级别,从其他类继承功能,允许实例化或销毁类型等。,1、类的声明体现封装性,类的声明: 访问修饰符 class 类名 :基类名 /数据成员(常量、字段、属性) /方法成员、构造函数和析构函数 /事件成员 类的访问修饰符有两种: Public,访问不受限制,可省略,本程序集(项目)和引用程序集中的任意位置都可以使用该类; Internal,本程序集(项目)范围内使用该类; 类的访问修饰符后可加修饰符: partial,分部

3、类,同一命名空间中可以声明同名的类写不同的成员,编译时合为一个类。 static,为静态类,只能包含静态成员,不能实例化。直接使用:静态类名.静态成员名 。,类的声明体现封装性,成员的五种访问修饰符体现外部的可访问性: public:公共成员,本命名空间或引用该命名空间的范围可以访问该成员。 protected:受保护成员,可跨程序集(项目)的本类或其派生类可以访问该成员。 internal:内部成员,当前程序集可以访问该成员。 protected internal:当前程序集中本类或其派生类可以访问该成员。 private:(可省略)私有成员,最低访问级别,只有在声明它们的类、结构体中才可访

4、问。 类成员访问修饰符后跟static的为静态成员。静态成员属于类或静态类,不属于类的对象。,实例1:创建类及使用,在窗体上创建文本框、按钮;进入代码编辑窗口,与窗体类并列位置创建Student1类: class Student1 / 数据成员定义列表 public string name; private uint age; protected char sex; internal string telephone; public string grade; /方法成员定义列表 /事件成员定义列表 ,也可创建独立的类模块文件,添加类模块文件:在“项目”“添加类”,弹出对话框;也可以在方案窗口

5、的项目上右键菜单。,模板:选“类”; 名称(N):改为 Student2 ; 即可生成一个类模块文件student2 .cs ; 按上例把类代码写入即可。,实例1:创建类及使用,private void button1_Click(object sender, EventArgs e) Student1 obj1 = new Student(); obj1.name = “张三“; obj1.grade = “聊大理工学院2015级“; obj1.telephone=“13900000000“; textBox1.Text = obj1.name + obj1.grade+obj1 .tele

6、phone ; /其他类型的成员此处不可用,为什么? ,第六章:面向对象的程序设计,面向对象的最基本的特征是抽象性、封装性、继承性和多态性。 6.1 类的抽象与封装 6.2 数据成员属性 6.3 方法成员 6.4 类的继承性 6.5 类的多态性 6.6 委托类型 作业,6.2 数据成员属性,C#数据成员:包括字段、常量、属性。 属性:类中私有或保护字段,外部不可直接访问,可用属性访问器 get 和 set访问,称带有属性访问器的字段为属性。 属性访问器可以说是一种特殊的方法,对字段访问。 只含get的称只读属性,只含set的称只写属性,都包含的称可读写属性。 属性是对现实世界中对象静态特征的抽

7、象,它提供了对类或对象性质的访问,体现了对象的封装性。 成员修饰符后跟static声明的属性是静态属性,不能实例化而直接使用: 类名.静态属性名,实例2:属性访问器,class Student private string name; / name 属性成员定义 public string Name / Name 第1字母大写,属性可读写 set name = value; / set通过value关键字赋值 get return name; / get通过return关键字返回属性值 private uint age; public uint Age / Age 第1字母大写,只写属性 se

8、t age = value; protected char sex; internal string telephone; public string grade; ,实例2:属性访问器,上述做法与使用public定义字段似乎没什么意义,其实我们可以写出更完善的代码,如下所示:,public string Name set if (value.Length =2) name = value; else name =“名字不完整“; get return name; ,private void button1_Click(object sender, EventArgs e) Student o

9、bj1 = new Student(); obj1.Name = “张三“; textBox1.Text = obj1.Name ; / = obj1.Age.ToString ();错,? ,第六章:面向对象的程序设计,面向对象的最基本的特征是抽象性、封装性、继承性和多态性。 6.1 类的抽象与封装 6.2 数据成员属性 6.3 方法成员 6.4 类的继承性 6.5 类的多态性 6.6 委托类型 作业,6.3 方法成员,方法是类或结构中用于执行计算或其它行为的成员,前面学习过方法的定义。 6.3.1 方法的定义与调用 6.3.2 方法的参数传递 6.3.3 方法重载与运算符重载 6.3.4

10、构造函数与析构函数,6.3.1 方法的声明与调用,方法声明语法: 访问修饰符 返回值类型 方法名(形参) /方法实现部分; return 返回值表达式; 访问修饰符:public、 private、protected、internal 、 protected internal; 访问修饰符后可跟选:static(声明静态方法)、 virtual(声明虚方法) 、 abstract(声明抽象方法) 、override(复写虚方法和抽象方法)具有特殊意义,以后介绍; 返回值数据类型,无返回值的用void。,实例:方法的声明与调用,静态方法调用语法: 类名.静态方法名(实参); 实例化方法调用语法:

11、 对象名.方法名(实参); 在Student类中增加一个无返回值的say方法: public void say() MessageBox.Show(“聊城大学!“); 方法调用,弹出一个信息框: private void button1_Click(object sender, EventArgs e) Student obj1 = new Student(); obj1.say(); ,实例:返回值方法的定义与调用,在Student类中增加一个返回值的方法: public int Sum( int x , int y) int s = x + y; return s; /返回值给Sum ,返

12、回值的方法方法调用: private void button1_Click(object sender, EventArgs e) Student obj1 = new Student(); MessageBox .Show (obj1.Sum(10, 6).ToString(); /实参与形参一一对应 ,6.3.2 方法的参数传递,参数传递就是调用方法时将实参传递给形参的过程,分为按值传递与按引用传递。 1、按值传参(值类型、 string和object型) 2、按引用传参(值类型、 string和object型使用ref) 3、输出参数 4、引用类型数据的传参( 除string和objec

13、t外 ) 5、数组型数据的传参,1、按值传参,按值传参:把实参变量的值赋给相对应的形参变量。 被调用的方法所接收到的只是实参数据值的一个副本,是一种单向值传递。 值类型的参数在传递时默认为按值传参。 string和object( .NET 中所有类的最终基类)虽然是引用类型数据,但从表现形式来看,其具有按值传参的效果。 系统提供的静态方法都是按值传参的。 有返回值时使用return返回值或一个数组(贪心算法实例)。,实例4-4:按值传参两个值交换,private void button1_Click(object sender, EventArgs e) string a = textBox1

14、.Text; string b = textBox2.Text; swap1(a, b); textBox3.Text = a; textBox4.Text = b; public void swap1(string x , string y) string z; z = x; x = y; y = z; ,2、按引用传参,按引用传参:调用方将把实参变量的引用赋给相对应的形参变量。 实参变量的引用代表数据值的内存地址,因此,形参变量和实参变量将指向同一个引用。 方法内部形参变量的变化时,实参随之变化,从而实现返回多个值。 无需再使用return语句返回值。 当值类型和string类型参数要按引

15、用方式传参时,就必须在实参或形参的前面添加 ref 关键字。,实例4-5:按引用传参两个值交换,private void button2_Click(object sender, EventArgs e) string a = textBox1.Text; string b = textBox2.Text; swap2( ref a , ref b); textBox3.Text = a; textBox4.Text = b; public void swap2( ref string x , ref string y) string z; z = x; x = y; y = z; ,实参与形

16、参均使用 ref !,3、输出参数,一般都是实参把值传给形参,但有时传参之前无法确定实参值,其值由方法调用结束后返回。 输出参数:通过out关键字把方法中的数据通过形参返回给实参,实参与形参前必须添加 out 。 输出参数的实参无需先初始化,其实传参前也不知道其值,目的就是调用方法时,再返回其值,结合下例理解。 实例4:用输出参数求文件路径中的目录和文件名。,输入路径文件名,返回路径、文件名,实例4-6:用输出参数求文件路径中的目录和文件名,private void button1_Click(object sender, EventArgs e) string path = textBox1.Text; /初始化 strin

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

当前位置:首页 > 高等教育 > 大学课件

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