版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
类的继承、多态和接口类的继承、多态和接口1继承的出现(I)classStudent{ publicintid=3; publicstringname="Tom"; publicvoidSelfIntr() { Console.WriteLine(id+":"+name); }}classPupil{ publicintid=3; publicstringname="Tom"; publicvoidSelfIntr() { Console.WriteLine(id+“:"+name); } publicvoidGame() { Console.WriteLine("我喜欢玩皮球!"); }}新类比原类多了一个方法继承的出现(I)classStudentclassPup2继承的出现(II)classStudent{ publicintid=16; publicstringname="Tom"; publicvoidSelfIntr() { Console.WriteLine(id+"\t"+name); }}classPupil:Student{ publicvoidGame() { Console.WriteLine("我喜欢玩皮球!"); }}使用:继承原有类的内容,再另行添加新的内容,简化了代码的编写,这就是继承!父类、基类或超类子类或派生类继承的出现(II)classStudentclassPu3继承的特点不支持多重继承,可以有多层继承子类不继承父类的私有成员和构造方法默认情况下,子类调用父类中无参构造方法如果在父类中定义了带参构造方法,那么在创建子类对象时可能会出现错误在子类构造方法的括号后面使用:base()调用父类的构造方法
继承的特点不支持多重继承,可以有多层继承4访问控制修饰符(I)附:还有一种protectedinternal修饰符,可以在本类、派生类及所属文件(程序集)中访问访问控制修饰符(I)附:还有一种protectedint5访问控制修饰符(II)classF{
publicinta;
internalintb;
protectedinternalintc;
protectedintm;
privateintn;
}classS1:F{
a—√
b—√
c
—√
m—√
n—×
}classT1{
a—√
b—√
c
—√
m—×
n—×
}classS2:F{
a—√
b—×
c
—√
m—√
n—×
}classT2{
a—√
b—×
c
—×
m—×
n—×
}文件f1文件f2访问控制修饰符(II)classF{
publi6virtual与override在父类中被允许重写的方法以virtual来修饰,子类中的同名方法用override来进行重写以实现多态用virtual修饰的方法称为“虚方法”,它仅表示该方法可以被子类重写virtual不能与private、override、abstract和static等修饰符同时使用override不能与new、static、virtual同时使用 见示例:virtual与override在父类中被允许重写的方法7父类对象指向子类对象空间父类对象可以调用子类对象中继承的、且还未被隐藏(或重写)的成员如果父类中的方法被子类用override所重写,那么父类将调用子类重写后的方法如果在子类中用new创建了与父类同名的成员,那么父类将无法识别子类新创建的成员,而仍然调用本类原有的成员 见示例:父类对象指向子类对象空间父类对象可以调用子类对象中继承的、且8多态的应用由于子类对父类的方法进行了重写,我们可以根据程序设计的需要通过父类对象去调用不同子类中的方法创建一个父类对象的数组,数组的个数可以和子类的个数相同,每个下标都对应一个子类对象,根据下标值的变化去调用子类对象所各自重写的方法多态的应用由于子类对父类的方法进行了重写,我们可以根据程序设9父类对象强制转换为子类对象当父类对象指向一个子类对象的空间时,虽然是父类对象在操纵这一空间,但该空间的实质还是子类的,因此,完全可以把这个父类对象强制转换成子类对象 classFather
{
publicintnum=2;
}
classSon:Father
{
publicintcnt=9;
}staticvoidMain()
{
Fatherf=newSon();
//f是父类对象,不能操纵子类中的cnt
Console.Write(t);//将报错
//将f强制转换后,就可以使用cnt了
Console.Write(((Son)f).cnt);
}父类对象强制转换为子类对象当父类对象指向一个子类对象的空间时10抽象类和抽象方法使用abstract关键字来创建一个抽象类或是抽象方法抽象类不能被实例化不能创建抽象的构造方法抽象方法没有具体功能实现抽象方法由本类的子类去实现,子类中需要使用override关键字抽象类和抽象方法使用abstract关键字来创建一个抽象11CTS根类型:ObjectC#中的任何类型都是从object类继承而来的,object其实是System.Object的别名,System.Object也是.NET类库中所有类型的始祖,包括值类型和引用类型,都是直接或间接从System.Object继承而来的System.Object引用类型System.ValueType引用类型值类型CTS根类型:ObjectC#中的任何类型都是从object12接口:interface如果一个类中的所有方法都没有被实现,那么这个类就可以被声明为“接口”接口中的成员都默认为public,但不能使用publicC#接口中不能声明成员变量(常量)类也可以在继承父类的同时,实现多个接口,多个接口之间以“,”隔开接口名习惯上以大写字母I开头
见示例:接口:interface如果一个类中的所有方法都没有被实现,13接口的实际应用接口提供了一个统一的标准,所有继承接口的类都必须要遵循这一标准实现接口可以大大减轻程序开发的负担,提高了灵活性和扩展性在接口的使用中,要清晰地掌握父类对象指向子类对象空间这一点接口的实际应用接口提供了一个统一的标准,所有继承接口的类都必14Convert类Convert类中的所有方法都是静态的,其作用是要将一种基本数据类型转换成另一种数据类型其中的以ToXXX为前缀的方法中,XXX指的是CTS类型的名称,如: int为Int32 string为String float为SingleConvert类Convert类中的所有方法都是静态的,15Math类Math类静态的形式提供了进行数学运算的方法,如: Abs(value):求value的绝对值 Ceiling(value):求大于或等于value的最小整数 Flooring(value):求小于或等于value的最大整数\ Max(value1,value2):求两个数中的最大数 Min(value1,value2):求两个数中的最小数 Pow(x,y):求x的y次幂 Sqrt(value):求value的平方根
PI:返回圆周率的值Math类Math类静态的形式提供了进行数学运算的方法,16Random类Random类中的方法可用于产生随机数,我们需要创建一个该类的对象调用其方法: Randomrd=newRandom(); rd.Next():它返回一个小于2,147,483,647的非负数
rd.Next(intvalue):它返回一个小于指定值value的非负数 rd.Next(a,b):它返回一个介于a与b之间的随机数 rd.NextDouble():返回一个介于0.0和1.0之间的随机数Random类Random类中的方法可用于产生随机数,我17日期/时间类型在C#中,使用System.DateTime结构描述日期和时间在DateTime结构中有静态属性Now用来表示系统当前的日期/时间,Today用来表示当前的日期其它的非静态属性有: Year-年Month-月Day-日Hour-时Minute-分Second-秒 Date-获取实例的日期部分 DayOfYear-返回一年当中的第几天DayOfWeek-星期几日期/时间类型在C#中,使用System.DateTime结18创建DateTime实例构造方法的重载形式有: DateTime(intyear,intmonth,intday) DateTime(year,month,day,hour,minute,second) DateTime(年,月,日,时,分,秒,毫秒) DateTime(Int64):以1年1月1日的千万分之一秒为单位 此外,还可以使用System.Globalization.Calendar类的对象作为DateTime构造方法的最后参数创建DateTime实例构造方法的重载形式有:19
staticvoidMain(string[]args){
Console.WriteLine(DateTime.Today);//输出当前的日期
Console.WriteLine(DateTime.Now);//DateTimedt=DateTime.Now;//将当前的日期/时间赋值给DateTime结构对象
DateTimedt=newDateTime(2008,8,8);//用指定的日期/时间创建DateTime结构对象
Console.Writ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度公司股东内部关于企业社会责任履行共识协议3篇
- 二零二五农村合作建房工程招投标及合同管理协议
- 二零二五年度环保设施项目公司转让合同3篇
- 2025年度农村公路养护与社区文化活动合同2篇
- 2025年度外卖配送公司送餐服务优化合同3篇
- 2025年度公司与公司签订的智慧城市建设合作协议3篇
- 2025年度绿色养殖产业链合作协议书-养羊篇3篇
- 2025年度公司车辆充电设施建设及使用协议3篇
- 二零二五年度特色水果种植基地果园土地承包合同3篇
- 2025年度农村土地流转承包合同(农产品品牌推广)
- 智能安防智慧监控智慧管理
- 中心学校2023-2024学年度六年级英语质量分析
- 2024年甘肃兰州生物制品研究所有限责任公司招聘笔试参考题库附带答案详解
- 保单检视报告活动策划
- 《学前教育研究方法》课件
- 室外消火栓安装工程检验批质量验收记录表
- AI在药物研发中的应用
- 建立信息共享和预警机制
- 美容外外科管理制度
- 苯-甲苯分离精馏塔化工原理课程设计
- 国企人力资源岗位笔试题目多篇
评论
0/150
提交评论