dyz第四章在中实现oop概念_第1页
dyz第四章在中实现oop概念_第2页
dyz第四章在中实现oop概念_第3页
dyz第四章在中实现oop概念_第4页
dyz第四章在中实现oop概念_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C#

中实现

OOP

概念第四章回顾

第三章C#基础C#变量的声明方式如下:

AccessModifierDataTypeVariableName;在C#中,数据类型分为两种基本类型,即值类型和引用类型。装箱是指从值类型到引用类型的转换,而取消装箱是指从引用类型到值类型的转换。C#的结构内部可以定义方法,也可以拥有构造函数。目标在C#中使用构造函数在C#中使用析构函数解释垃圾回收器的工作原理讨论方法重载讨论操作符重载在C#中使用继承讨论C#中的重写C#中的构造函数3-1是类中的特殊类型的方法是每次创建对象时要调用的函数通常用于初始化与类同名不返回值构造函数3-2usingSystem;publicclassDaysInYear{privateintdays;publicDaysInYear(){days=365;}staticvoidMain(String[]args){DaysInYearnewDaysInYear=newDaysInYear();Console.WriteLine(newDaysInYear.days); }}无构造函数输出的结果是0有构造函数输出结果是365带参数的构造函数3-3…publicclassDaysInYear{privateintdays;publicDaysInYear(){days=365; }publicDaysInYear(intday){days=day;}publicDaysInYear(StringdayOne){ days=Convert.ToInt32(dayOne);}publicvoidsetDay(intnewDays){ days=newDays;}…}传递不同个数的参数传递个数相同但类型不同的参数C#中的析构函数由C#中的垃圾回收器调用垃圾回收器通过销毁不再需要或不再被引用的对象来释放内存语法

…~DaysInYear(){ //析构函数实现}…垃圾回收器3-1垃圾回收器的工作原理如果为定义析构函数的对象分配了内存,运行库将把该对象添加到需要销毁的对象的列表中。垃圾回收器定期检查有没有不再被引用的对象如果找到了其名称没有列在销毁器列表中的对象,就立即清除该对象。完成垃圾回收后,将调用销毁器线程,该线程调用有标记为“准备销毁”的对象的销毁方法

(析构函数)。垃圾回收器3-2对象销毁过程发生后,就将该对象从需要销毁的对象列表中删除。因为该对象没有被引用,也没有列在销毁器列表中,所以下次进行垃圾回收时就会将它清除。垃圾回收器3-3有析构函数的对象占用的资源较多,因为即使不再需要它们,它们仍会在内存中驻留较长时间。销毁过程作为独立的线程执行,该线程

会占用大量资源。方法重载重载方法有两种方式指定不同个数的参数指定不同类型的参数不同参数个数的方法重载usingSystem;publicclassArea{privateintareaVal;publicvoidAreaCal(intradius){areaVal=(22/7)*radius*radius;}publicvoidAreaCal(intlength,intbreadth){areaVal=length*breadth;}publicvoidAreaCal(intlength,intbreadth,intheight){areaVal=length*breadth*height;}…}参数的类型相同参数个数不同不同参数类型的方法重载...publicvoidAreaCal(intradius){areaVal=(22/7)*radius*radius;}publicvoidAreaCal(stringshapeName){Console.WriteLine("{0}的面积没有计算",shapeName);}...方法中参数个数相等,参数类型不同操作符重载3-1重载操作符意味着使该操作符具有不同的行为使用操作符可以使方程式简单易懂…//第1行intresult=Decimal.Add(54,200);//第2行intresult2=54+200;…上述两行执行同样的操作,但操作符更简便易懂操作符重载3-2以下是可以重载的操作符列表操作符重载3-3usingSystem;publicstructDistance{publicDistance(intlon,intmag){ this.longitude=lon; this.latitude=mag;}intlongitude,latitude;publicstaticDistanceoperator-(Distancefirst,Distancesecond){ returnnewDistance(first.longitude-second.longitude,first.latitude-second.latitude);}//主函数}publicstaticvoidMain(){ Distancestart=newDistance(); DistancenewDistance=newDistance(); Distancefinish=newDistance(); start.longitude=12; start.latitude=10; finish.longitude=2; finish.latitude=1; newDistance=start-finish; Console.WriteLine("终点的位置在起点以东{0}度,以北{1}度。",newDistance.longitude,newDistance.latitude);}C#中的继承2-1将新类作为另一个类的后代来声明和使用避免重复编写代码提供代码重用的巨大好处C#中的继承2-2有两种继承类型单一继承多重继承

C#只支持单一继承,不支持多重继承单一继承usingSystem;classCharacterVal{publicintsetCharVal(charch){charcharVal=ch;Console.WriteLine("输入的字符是:{0}",charVal);return(0);}}classStringVal:CharacterVal{publicstringstrVal;

publicintsetStrVal(stringstr){strVal=str;Console.WriteLine("输入的字符串是:{0}",strVal);return(0);}}classInheritance{staticvoidMain(){StringValobject1=newStringVal();Object1.setCharVal('j');Object1.setStrVal("enjoy");}}类StringVal继承CharacterVal因此可以直接引用方法setCharVal密封类如果不需要类被继承则应当密封该类…sealedclassclassOne

{//类的实现}…通过指定sealed关键字,可以密封任何类方法重写2-1重写基类中现有方法的步骤:-在继承类中声明同名的新方法

-在该方法名前附加new关键字

方法重写2-2usingSystem;classIntAddition{publicvoidadd(){intfirstNum=1;intsecondNum=2;Console.WriteLine("两数之和是:{0}",firstNum+secondNum);}}classStringAddition:IntAddition{newpublicvoidadd(){stringfirstStr="a";stringsecondStr="b";Console.WriteLine("两字符串之和是:{0}",firstStr+secondStr);}}classMethodOverride{publicstaticvoidMain(){StringAdditionobjStringAddition=newStringAddition();objStringAddition.add();}}在StringAddition类中基类中add方法被重载总结2-1带参数的构造函数是接受参数的构造函数在

C#中,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论