欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    g第7章方法.ppt

    • 资源ID:67322463       资源大小:311KB        全文页数:30页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    g第7章方法.ppt

    第第7章章 方法方法n前言前言n7.1 方法的定义和调用方法的定义和调用n7.2 方法的参数方法的参数n7.3 方法的重载方法的重载 n7.4 静态和非静态方法静态和非静态方法n总结总结前言前言在面向过程的在面向过程的C语言中语言中,通常通常 可分为可分为数据数据和和对数据的操作对数据的操作两大部分两大部分在面向对象的在面向对象的C+中中,大多数情况下大多数情况下,数据数据 成为类的数据成员成为类的数据成员 对数据的操作对数据的操作 成为类的方法成员成为类的方法成员在在C#中中,任何事物都必须封装在类中任何事物都必须封装在类中 故故C#中中没有全局变没有全局变(常常)量和全局函数的概念量和全局函数的概念 返回首页7.1 方法的定义与调用方法的定义与调用n7.1.1 方法的定义方法的定义n7.1.2 方法的调用方法的调用返回首页7.1.1 函数的定义函数的定义C#中中的的每每一一个个函函数数一一般般从从五五个个方方面面来来进进行行定定义义:方方法法修饰符、返回类型、方法名、形式参数表和方法体。修饰符、返回类型、方法名、形式参数表和方法体。定义一个函数的语法格式为:定义一个函数的语法格式为:修饰符修饰符 ()方法体方法体例如:例如:public int max(int a,int b)int t;if(ab)t=a;else t=b;return t;返回上节例例7-1:给出以下程序的运行结果。给出以下程序的运行结果。class Ccountpublic int Func(int n)if(n0)return 1;else if(n=0)return 0;else return-1;public static void Main()int n;n=int.Parse(Console.ReadLine();CCount count=new Ccount();Console.WriteLine(“返回返回结结果果:0”,count.Func(n);返回上节7.1.2 方法的调用方法的调用n注注意意:在在C#中中,除除了了主主方方法法main和和构构造造方方法法,析析构构方方法法由由系系统统自自动动调调用用外,其他方法都是由主方法直接或外,其他方法都是由主方法直接或间接间接调用的调用的。n调用的语法格式为:调用的语法格式为:n 1.对象方法对象方法:对象对象.方法名方法名(实际参数表实际参数表);n 2.对对象内部中象内部中调调用内部方法用内部方法:方法名方法名(实际参数表实际参数表);n3.静态方法静态方法:类类.方法名方法名(实际参数表实际参数表);注意注意:C#中没有中没有默默认认参数参数的概念的概念,所以都必所以都必须传递须传递确定的确定的值值;返回上节7.2 方法的参数方法的参数n7.2.1 值参数值参数n7.2.2 引用型参数引用型参数n7.2.3 输出参数输出参数n7.2.4 数组型参数数组型参数返回首页7.2.1 值参数值参数n记忆记忆:值参数传递的是值参数传递的是调用参数调用参数的一分拷贝的一分拷贝!例例7-1 输入输入a,b两个数两个数,求和求和 using System;class Sum public float Add(float x,float y)return x+y;public static void Main()float a,b;Sum obj=new Sum();Console.Write(“请输入一个浮点数请输入一个浮点数a:”);a=float.Parse(Console.ReadLine();/转换成浮点数转换成浮点数 Console.Write(“请输入一个浮点数请输入一个浮点数b:”);b=float.Parse(Console.ReadLine();/转换成浮点数转换成浮点数 console.WriteLine(“总计总计:0”,obj.Add(a,b);console.WriteLine(“a=0 b=1”,a,b);返回上节7.2.2 引用类型引用类型(ref)参数参数n记记忆忆:C#编编译译器器把把参参数数传传递递指指向向和和调调用用代代码码的的变变量量一样的内存中去一样的内存中去 例例7-2 交换交换a,b两个数两个数 using System;class RefSwap public void Swap(ref float x,ref float y)float tmp;tmp=a;a=b;b=tmp;public static void Main()float a,b;RefSwap obj=new RefSwap();Console.Write(“请输入一个浮点数请输入一个浮点数a:”);a=float.Parse(Console.ReadLine();/转换成浮点数转换成浮点数 Console.Write(“请输入一个浮点数请输入一个浮点数b:”);b=float.Parse(Console.ReadLine();/转换成浮点数转换成浮点数 obj.Swap(ref a,ref b);console.WriteLine(“交换结果交换结果:0,1”,a,b);/注意注意:在调用方法之前在调用方法之前,被传递的参数一定已被初始化过被传递的参数一定已被初始化过返回上节7.2.3 输出输出(out)参数参数n记记忆忆:与与ref 类类似似,只只是是传传入入时时不不必必初初始始化化,而而在在返返回回时时,必须已有值必须已有值.using System;class Test public void SplitPath(string path,out string dir,out string name)ini i=path.Length;while(i-0)char ch=pathi-1;if(ch=|ch=/|ch=:)break;dir=path.Substring(0,i);name=path.Substring(i);public static void Main(params string arg)string dir,name;SplitPath(arg0,out dir,out name);console.WriteLine(“目录目录:0,文件名文件名:1”,dir,name);/注意注意:在在 返回之前返回之前,被传递的参数必须初始化被传递的参数必须初始化/不需要初始化不需要初始化返回上节7.2.4 数组类型数组类型(params)参数参数n例例:class Test public static void F(params int args)Console.Write(“数组含有数组含有0 个元素个元素:”,args.Length);foreach(int i in args)Console.Write(“0”,i);Console.WriteLine(“”);public static void Main(params string args)int a=1,2,3;F(a);F(10,20,30,40);F();显示显示:数组含有数组含有3 个元素个元素:1 2 3 数组含有数组含有4 个元素个元素:10 20 30 40 数组含有数组含有0 个元素个元素:注意注意:如果将其定义为如果将其定义为 public static void F(int args),则仅能向其传递则仅能向其传递F(a)返回上节7.2.4 数组类型数组类型(params)参数参数n记记忆忆:当当需需要要传传递递不不确确定定的的同同类类型型参参数数时时,可可以以使使用用它它.例例:using System;class Test public void Main(params string arg)foreach(string s in arg)Console.WriteLine(s);在控制台中在控制台中:Test I like it “我我 喜欢喜欢”(回车回车)显示显示:I like it 我我 喜欢喜欢 返回上节7.2.4 数组类型数组类型(params)参数参数n注意注意:n 1.参参数数中中如如果果包包含含数数组组型型参参数数,那那么么它它必必须须在在参参数数表的最后表的最后n F(int a,params int c,double b)/错误错误 F(int a,double b,params int c)/正确正确 2.数组型参数只允许是一维数组数组型参数只允许是一维数组,如如string string 类型都可以类型都可以,但但string,不行不行 3.数组型参数不能再有数组型参数不能再有ref 和和out 修饰符修饰符 返回上节7.3 方法的重载方法的重载n 7.3.1 什么叫重载什么叫重载?n 7.3.2 构造方法的重构造方法的重载载n 7.3.3 运算操作符的重运算操作符的重载载返回首页7.3.1 方法的重载方法的重载n什么叫重载什么叫重载?在同一在同一类类中多于两个的同名方法中多于两个的同名方法-重重载载.n编译编译器如何区分重器如何区分重载载的方法的方法?编译编译器会根据方法的特征器会根据方法的特征(又称又称签签名名)的不同来区分同名的方法的不同来区分同名的方法.所以定所以定义义方法重方法重载时载时,不能使不能使”签签名名”相同相同void open()void open()/错误!,签名相同void open()int open();/错误!,签名相同void open()void open(int arg)/参数个数不同,签名不同void open(int arg)void open(string arg)/参数类型不同,签名不同void open(int arg1,string arg2)void open(string arg1,int arg2)/参数类型的顺序不同,签名不同void open(int ars)void open(params int args)/错误,虽然表面上,个数不一定相同,但是参数类型都是数组类型,所以编译器不可以识别void open()void open(int a)void open(int a,int b)void open(params int args)/正确,参数虽然存在相同的可能性,但是签名完全不同,所以编译器可以识别.返回上节7.3.2 构造方法的重构造方法的重载载用法用法:在在实实例化例化时时,可以通可以通过调过调用不同的构造方法用不同的构造方法,达到不同的初始化效果达到不同的初始化效果 例例 7-9 class Circle int x,y;double radius;private const float PI=3.1415926f;public Circle()/无参初始化无参初始化 x=0;y=0;radius=0.0;public Circle(int PositionX,int PositionY)/提供提供圆圆心坐心坐标标 x=PositionX;y=PositionY;radius=0.0;public Circle(double Radius)/提供半径提供半径 x=0;y=0;radius=Radius;public Circle(int PositionX,int PositionY,double Radius)/提供完成参数提供完成参数 x=PositionX;y=PositionY;radius=Radius;/实例化实例化Circle myc=new Circle();/x=0 y=0,r=0.0/实例化实例化Circle myc=new Circle(100,50);/x=100 y=50,r=0.0/实例化实例化Circle myc=new Circle(50.0);/x=0 y=0,r=50.0/实例化实例化Circle myc=new Circle(100,50,50.0);/x=100 y=50,r=50.0返回上节7.3.3 运算符的重运算符的重载载 n 7.3.3.1 问题问题的提出的提出n 7.3.3.2 使用运算符重使用运算符重载载n 7.3.3.3 语语法法n 7.3.3.4 例子例子n 7.3.3.5 可重可重载载的运算符的运算符n 7.3.3.6 运算符重运算符重载载的的设计设计准准则则返回上节7.3.3.1 问题问题的提出的提出 当我当我们们使用一个新的自定使用一个新的自定义类时义类时,相当于使用一种新相当于使用一种新类类型型.那么那么 如果运算符如果运算符(+-*/)也能也能为为我我们们所用就好了所用就好了!例例:如如 某个平面上的点某个平面上的点CPosition 类类,我我们们把把实实例化成例化成对对象象,这时这时如果要移如果要移动动它它 class CPosition public x;/x坐坐标标 public y;Cposition a1,offset;a1.x=a1.x+3;/x轴轴正向移正向移3格格 或或 a1.x+=3;a1.y=a1.y-10;/y轴负轴负向移向移10格格 或或 a1.y+=-10;或或 a1.Move(3,-10);/x,y轴轴偏移偏移缺点缺点:1.不不够够直直观观,使用麻使用麻烦烦.2.没有充分表达没有充分表达OO的思想的思想返回上节7.3.3.2 使用运算符重使用运算符重载载 新的解决方案新的解决方案:a1=a1+offset;/offset 也是一个点也是一个点,不不过过它的它的x,y值值是偏移量是偏移量 或或 a1+=offset;达到了意达到了意义义明确明确,直直观观的好的好处处!这这是由于我是由于我们对们对+进进行了改写行了改写(重重载载).返回上节7.3.3.3 定定义义 public static 返回返回值值 operator op(对对象象1,对对象象2).注意注意:1.必必须须定定义为义为 public static 2.参数的个数取决于有多少个操作数参数的个数取决于有多少个操作数.如如:+两个操作数两个操作数,!只有自己一个只有自己一个 3.单单目运算符目运算符时时,参数参数类类型必型必须须与所包含与所包含类类(结结构构)的的类类型一型一样样 4.双目运算符双目运算符时时,第一个参数的第一个参数的类类型与型与3 要求相同要求相同.5.并不是所有运算符都能重并不是所有运算符都能重载载,如如=不能重不能重载载 6.+=-=不能重不能重载载,要拆开看要拆开看,分分别别重重载载+-就能就能实现这实现这种种组组合合 7.返回返回值值 通常通常为为所包含所包含类类(结结构构)的的类类型型 返回上节7.3.3.4 示例示例 例例:上上节说节说的的 移移动动点位置点位置 重重载载+号号 class CPosition public static CPosition operator+(CPosition p1,Cposition offset)CPosition newp=new Cposition();newp.x=p1.x+offset.x;newp.y=p1.y+offset.y;return newp;/使用使用 p1=p2+offset;或或 p1+=offset;记忆记忆:通常通常 重重载载 可以形成可以形成+=这这种种组组合的运算符合的运算符时时,一定要在一定要在实现实现中中产产生生 新的新的 实实例例.不能是不能是这样这样:p1.x+=offset;p1.x+=offset;return p1;否否则则可能会可能会导导致有些运算出致有些运算出错错!思考思考:有哪些运算会出有哪些运算会出错错?返回上节7.3.3.5 可重可重载载的运算符的运算符 通常有通常有:单单目目:+-+-true false!双目双目:+-*/%&|比较运算符:比较运算符:=!=注意注意:1.不允不允许许重重载载 =&|?:,new typeof sizeof is ()(未完未完)2.没有使用的运算符没有使用的运算符 如如 *3.不能改不能改变变运算符的运算符的优优先先级级返回上节7.3.3.6 运算符重运算符重载载的的设计设计准准则则 切切记记:1.不是一切自定不是一切自定义类义类的运算均要的运算均要实现实现运算符重运算符重载载不能不能错错用用,不能不能滥滥用用 如如果果+依依据据操操作作数数的的类类型型而而具具有有不不同同的的含含义义,那那么么代代码码的的运运行行就就不不再再是是透透明的,会出现大量不可预料的副作用明的,会出现大量不可预料的副作用 2.在不会在不会导导致理解致理解错误错误的情况下使用的情况下使用 例例:C购购物物车车 a ;C商品商品 g;a=a+g;/不好不好,如果如果 被写成被写成 a=b+g 怎么理解怎么理解?(b 为为另一另一辆购辆购物物车车)3.无意无意义义使用使用时绝对时绝对不要重不要重载载它它 例例:C苹果苹果 a;C梨梨 b ;C水果水果 c c=a+b;/不知所云不知所云 4.不断地不断地积积累累经验经验,但它能更直但它能更直观观,无无误误解解时时,才重才重载载一个运算符一个运算符 返回上节7.4 静静态态与非静与非静态态方法方法n 7.4.1 方法的分方法的分类类n 7.4.2 静静态态方法的方法的调调用用n 7.4.3 在方法中在方法中访问类访问类内的成内的成员员返回首页7.4.1 方法的分方法的分类类n 类类的成的成员员分两种分两种,方法也分两种方法也分两种 静静态态和非静和非静态态n 静静态态方法用方法用static修修饰饰,反之反之为为非静非静态态方法方法n 静静态态方法一种特例方法一种特例,它不属于它不属于该类该类中的任何具体中的任何具体实实例例.n 静静态态方法常被当作方法常被当作 C,C+中的全局中的全局 函数来看待函数来看待.或者或者 统计统计 该类该类的公共信息的公共信息 如如选选票是一个票是一个类类,如果要如果要统计总统计总票如的票如的话话,class 选选票票 static 票数票数;static 统计统计()投票投票(被被选举选举人人)返回上节7.4.2 静态静态方法的方法的调调用用n 类类名名.静静态态方法名方法名(参数表参数表)例例:Console.WriteLine(“hello”);Math.Sqrt(4);int.Parse(“1238”);数据数据库库.Open(连连接字串接字串);.返回上节7.4.3 在方法中在方法中访问类访问类内的成内的成员员 原原则则:静静态态方法方法仅仅能能访问类访问类内静内静态态成成员员.非静非静态态方法可能方法可能访问类访问类内任何成内任何成员员 (还还要受要受访问访问修修饰饰符限制符限制)例例:p7-20 class SQLServerDb static string progress1=“正在修复数据正在修复数据库库”;string progress2=“已修复数据已修复数据库库.”;public static void 修复修复()Console.WriteLine(progress1);/正确正确 Console.WriteLine(progress2);/编译错误编译错误 返回上节总结总结 记忆记忆:1.方法的方法的组组成部份成部份 2.返回返回值为值为空空时时 void 3.参数的形式参数的形式 值类值类型型 引用引用类类型型ref 输输出出类类型型out 数数组类组类型型params 4.区分区分值类值类型与引用型与引用类类型的区型的区别别 5.区分区分 引用引用类类型型 与与输输出出类类型的异同点型的异同点 6.区分区分params 与不加与不加 params 时调时调用的差用的差别别 7.掌握方法的掌握方法的签签名的区分名的区分 8.掌握运算符重掌握运算符重载载的定的定义义 9.积积累运算符重累运算符重载载使用使用经验经验,不不滥滥用用错错用用(学会容易学会容易,用好用好难难)8.掌握静掌握静态态方法的使用原方法的使用原则则 静静态态方法不属于方法不属于对对象象,而属于而属于类类返回首页作业作业 1.使用使用return语语句返回句返回值值和使用和使用输输出型参数有什么区出型参数有什么区别别,它它们们各自适用什么各自适用什么场场合下使用合下使用?2.改改错错 using system class Triangle private int a;private int b;private int c;public Triangle(int va,int vb,int vc)a=va;b=vb;c=vc;public void Main()Triangle tr=new Triangle(2,2);Console.WriteLine(“0,1”,tr.a,tr.b);return 0;返回首页作业作业 (独立完成独立完成)3.继继续续完完善善上上次次的的作作业业,为为网网络络用用户户类类 添添加加注注册册功功能能,注注册册时时对对用用户户输输入入的的ID进进行行合合法法性性检检查查(小写字母开小写字母开头头,只能由字母只能由字母,数字和下划数字和下划线组线组成成),并并验证验证用用户户两次两次输输入密入密码码是否相同是否相同.返回首页

    注意事项

    本文(g第7章方法.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开