第 4 章 面向对象编程方法

23
4 4 第 第第第第第第第第 第 第第第第第第第第 王王王 王王王王王王王王王王王王

Upload: henry-noel

Post on 03-Jan-2016

76 views

Category:

Documents


4 download

DESCRIPTION

第 4 章 面向对象编程方法. 王德俊 上海交通大学继续教育学院. 第 4 章 面向对象编程方法. 4.1一个简单的程序 4.2 类和对象 4.3 类的继承、重载与多态 4.4 运算符的重载 4.5 接口及其实现 4.6 方法的委托 4.7 常用的几个类 4.8 命名空间. 类方法. 1 方法的声明与调用 2 参数传递 3 重载方法 ( 4.3.2 ). 1 方法的声明与调用. C# 中的 方法必须放在类定义中声明 ,也就是说, 方法必须是某一个类的方法 方法遵循 先声明后使用 的规则 , 分 声明与调用 两个环节 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 4 章 面向对象编程方法

第第 44 章 面向对象编程方法章 面向对象编程方法

王德俊

上海交通大学继续教育学院

Page 2: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

第第 44 章 面向对象编程方法章 面向对象编程方法

4.1一个简单的程序

4.2 类和对象

4.3 类的继承、重载与多态

4.4 运算符的重载

4.5 接口及其实现

4.6 方法的委托

4.7 常用的几个类

4.8 命名空间

Page 3: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

类方法类方法

1 方法的声明与调用

2 参数传递

3 重载方法 (4.3.2)

Page 4: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

1 1 方法的声明与调用方法的声明与调用C# 中的方法必须放在类定义中声明,也就是说,方法必须是某一个类的方法

方法遵循先声明后使用的规则 , 分声明与调用两个环节

( 1 )声明方法

( 2 )调用方法

Page 5: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

(( 11 ) 声明方法) 声明方法

声明方法最常用的语法格式为:访问修饰符 返回类型 方法名 ( 参数列表 )

{ 方法体 }

方法如果是对外提供的服务,则访问修饰符通常是 public ,以保证在类定义外部能够调用该方法

方法的返回类型用于指定由该方法计算和返回的值的类型,可以是任何值类型或引用类型如果方法不返回一个值,则它的返回类型为 void

方法名是一个合法的 C# 标识符

Page 6: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

参数列表在一对圆括号中,指定调用该方法时需要使用的参数个数、各个参数的类型,参数之间以逗号分隔参数可以是任何类型的变量如果方法在调用时不需要参数,则不用指定参数,但圆括号不能

省略实现特定功能的语句块放在一对大括号中,叫方法体,“ {” 和“ }”分别表示方法体的开始和结束如果方法有返回值,则方法体中必须包含一个 return 语句,以指

定返回值,该值可以是变量、常量、表达式,其类型必须和方法的返回类型相同

如果方法无返回值,在方法体中可以不包含 return 语句,或包含一个不指定任何值的 return 语句

Page 7: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

(( 22 ) 调用方法) 调用方法

根据方法被调用的位置,可以分为在方法声明的类定义中调用方法和在方法声明的类定义外部调用方法

在方法声明的类定义中调用方法的语法格式为:

方法名 ( 参数列表 ) ;在方法声明的类定义中调用该方法,实际上是由类定义内部的其

他方法成员调用该方法

在方法声明的类定义外部调用方法实际上是通过类声明的对象调用该方法,其格式为:

对象名 . 方法名 ( 参数列表 )

Page 8: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

2 2 参数传递参数传递

( 1 ) 按值传递

( 2 )按引用传递

Page 9: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

参数传递参数传递

在方法的声明与调用中,经常涉及方法参数在方法声明中使用的参数叫形式参数(形参)

在调用方法中使用的参数叫实际参数(实参)

在调用方法时,参数传递就是将实参传递给形参的过程以例 MaxValue 为例,声明方法时的形参如下:

public int IntMax(int a,int b) ;

调用方法时的实参如下:

classmax.IntMax(x,y)

方法参数传递按性质可分为按值传递与 按引用传递

Page 10: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

(( 11 ) ) 按值传递按值传递

参数按值的方式传递是指当把实参传递给形参时,是把实参的值复制(拷贝)给形参,实参和形参对应不同的内存单元:

这种参数传递方式的特点是,形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全

基本类型(包括 string )的参数在传递时默认为按值传递

Page 11: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

[例 SwapInWin] 创建一个 Windows 应用程序

在程序中传递两个文本框中的数据给 Swap 方法

在该方法中交换这两个数据

观察文本框中的数据是否受到影响

Page 12: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

public void Swap(string s1,string s2){

string s3=s1;s1=s2;s2=s3; // 交换 s1与 s2 的值}private void button1_Click(object sender, System.EventArgs e){

if(textBox1.Text==""||textBox2.Text=="") return;Swap(textBox1.Text,textBox2.Text);

// 将两个文本框中的数据传递给 Swap 方法}

在 Swap 方法中交换 s1与 s2 的值,并未对文本框中的数据产生任何影响

Page 13: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

(( 22 ) ) 按引用传递按引用传递

方法只能返回一个值,但实际应用中常常需要方法能够修改或返回多个值,可以通过使用按引用传递参数的方式予以实现

按引用传递是指实参传递给形参时,不是将实参的值复制给形参,而是将实参的引用传递给形参,实参与形参使用的是同一个内存中的值

这种参数传递方式的特点是,当形参的值发生改变时,同时也改变实参的值

按引用传递分基本数据类型与类对象数据类型两种情况基本类型参数按引用传递时,实参与形参 前均须使用关键字 ref

Page 14: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

[例 SwapInWinRef] 修改例 SwapInWin 中的 Swap 方法声明与调用时的形参与实参修改为按引用传递,观察两个文本框中的数据是否发生变化

Page 15: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

由于 C# 不允许将对象的属性按引用传递,因此代码设计需要变通一下。public void Swap(ref string s1,ref string s2)// 在形参中增加 ref 关键字{ string s3=s1; s1=s2; s2=s3; }private void button1_Click(object sender,

System.EventArgs e){ if (textBox1.Text==""||textBox2.Text=="") return;

string ss1=textBox1.Text,ss2=textBox2.Text;// 将文本框中的值先赋给字符串变量

Swap(ref ss1,ref ss2); // 在实参中增加 ref 关键字textBox1.Text=ss1; textBox2.Text=ss2;

// 方法调用后,再将相应字符串变量赋给文本框}

在 Swap 方法中交换 s1与 s2 的值,文本框中的数据也相应变化

Page 16: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

按引用传递按引用传递

类对象参数总是按引用传递的,所以类对象参数传递不需要使用 ref 关键字

类对象参数的传递,实际上是将实参对数据的引用复制给了形参,所以形参与实参共同指向同一个内存区域

Page 17: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

[例 SwapInWinObject] 修改例 SwapInWinRef ,将 Swap 方法的形参类型设置为文本框类型

Page 18: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

public void Swap(TextBox s1,TextBox s2){

TextBox s3=new TextBox( );s3.Text=s1.Text;s1.Text=s2.Text;s2.Text=s3.Text;

}private void button1_Click(object sender, System.EventArgs e){

if(textBox1.Text==""||textBox2.Text=="") return;Swap(textBox1,textBox2);

}

Page 19: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

3 3 方法重载方法重载

为了能使同一名称适用于处理各种类型数据的方法, C# 提供了方法重载机制

方法重载是声明两个以上的同名方法,实现对不同数据类型的类似功能处理

Page 20: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

方法重载方法重载

方法重载有两点要求:① 重载的方法名称必须相同② 重载的方法,其形参个数或类型必须不同例如:

public void Swap(ref int a,ref int b) { }

public void Swap(ref float a,ref float b) { }

以上重载方法能同时处理整型与浮点型数据,从而实现对不同的数据类型进行相同的处理

声明了重载方法后,当调用具有重载的方法时,系统会根据参数的类型和个数寻求最匹配的方法予以调用

Page 21: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

[例MaxIntFloat] 创建一个控制台应用程序,在该程序中实现对两个整型、浮点型数据比较大小的功能

Page 22: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

class MaxIntFloat{// 比较值大小的方法声明

public int Max(int a, int b){

return a>b?a:b;}public float Max(float a, float b){

return a>b?a:b;}static void Main(string[] args){ int ia=60, ib=80;

float fa=5.2f, fb=8.8f;Class1 c=new Class1( );Console.WriteLine("ia与 ib较大的值为: {0}",c.Max(ia,ib));Console.WriteLine("fa与 fb较大的值为: {0}",c.Max(fa,fb));Console.ReadLine( );

}}

Page 23: 第 4 章 面向对象编程方法

应用软件开发( C# ) 第 4 章 面向对象编程方法

本讲小结本讲小结

1 类方法的声明与调用

2 参数传递

3 方法重载