




已阅读5页,还剩406页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C 课件 第一章第二章第三章第四章第五章第六章第七章第八章第九章第十章ACCP4 0补充 NET平台以及VisualStudio NETIDE简介 第一章 返回 目标 讨论计算 Internet和应用程序开发的转变了解对 NET的需求解释CLR和IL的角色VisualStudio NETIDE简介 集中式计算 客户端 服务器计算 数据大的话网络就不好了 分布式计算2 1 分布式计算2 2 计算方案的转变 当前的Internet 目前存在的难题 Internet的转变 站点 服务和设备彼此协作 共同提供丰富的用户体验 应用程序开发的演变 NET 演变的结果2 1 NET 演变的结果2 2 Internet的转变 计算的转变 应用程序开发的转变 融合计算和通讯 形成组合体 而不是孤岛 分布式计算本地进行 软件成为服务 应用程序可以由任何人在任何地方使用 NET NET 将DC 个人计算 向前推进了一步2 1 NET 将DC向前推进了一步2 2 NET所支持的语言 语言特定的编译器和运行库 代码被执行 IL 元数据 CLR IL和CLR的使用 执行 NET程序 Microsoft中间语言 公共语言运行库 VS NETIDE帮助系统演示 VS NETIDE设计器演示 VS NETIDE窗口管理演示 总结 NET是以Internet为中心的一种全新的平台通过 NET 可以将用户数据存放在网络上 并且随时随地通过与 NET兼容的任何设备访问这些数据NET独一无二的特征是可以提供多语言支持以 NET语言编写的源代码将被编译两次 第一次由语言特定的编译器从源代码编译为IL 第二次从IL编译为机器码 Microsoft NET平台组件 第二章 返回 回顾 NET是以Internet为中心的一种全新平台通过 NET 可以将用户数据存放到网络上 随时随地通过与 NET兼容的任何设备访问该数据 NET独一无二的特征是提供多语言支持以 NET语言编写的源代码被编译两次 一次由语言特定的编译器从源代码编译成IL 第二次从IL编译成机器码 目标 描述Microsoft NET的核心组件讨论 NET框架并列出其组件谈论 NET优点 Microsoft NET的组件 Microsoft Net平台的功能 Internet协议 XML Microsoft NET 构建在XML和Internet协议的基础之上 用于开发新一代软件的一套工具和服务集 旨在使对Internet上的任何资源组进行集成 编排成为可能 可以更快更容易地设计 实现和部署协作式Web解决方案 XML Internet协议 XML Microsoft NET 将实际数据与表现形式分开 构建新一代Internet的关键 使得能够对信息进行整理 编程和编辑 提供了一种将数据发布到多种设备的方法 使站点能够进行协作并提供能够彼此交互的Web类型丰富 性能高不用类型转换 穿透防火墙服务组合体 SOAP的功能 Internet协议 XML Microsoft NET Microsoft NET构建在HTTP和SOAP 简单对象访问协议 等现有协议上 SOAP是基于XML HTTP的协议 SOAP允许以独立于平台的方式访问服务 对象和服务器 SOAP用于在分散的分布式环境中交换信息 Microsoft NET平台 NET框架 NETEnterpriseServer NET生成块服务 选择Windows2000系列 Microsoft NET框架的组件 通过服务器系列可以快速生成和管理一个集成的 支持Web的企业系统可伸缩性设计可以与最新的Internet和数据标准实现互操作 安装SQLServer2000 InternetSecurity Acceleration ISA Server2000 HostIntegrationServer Exchange2000Server Exchange2000ConferencingServer CommerceServer2000 BizTalkServer2000 ApplicationServer2000 7个核心 NETEnterpriseServer NETEnterpriseServer 由Microsoft和其他ASP 应用程序提供 提供的商业Web服务这些服务可以在其他应用程序 Web服务中使用核心 NET生成块服务 通知个性化日历动态提供 NET生成块服务 组织A 组织B 在组织内部以及在组织之间多个客户 合作伙伴和服务提供商场所 进程和Web服务运行在 业务进程 NET框架作用 提供一个一致的面向对象的编程环境提供一个将软件部署和版本控制冲突最小化的代码执行环境提供一个保证代码安全执行的代码执行环境提供一个可消除脚本环境或解释环境的性能问题的代码执行环境使开发人员的经验在面对类型大不相同的应用程序时保持一致按照工业标准生成所有通信 以确保基于 NETFramework的代码可与任何其他代码集成 NETFramework体系结构 NETFramework核心组件 公共语言运行库 NETFramework类库基类库扩展类库 Microsoft NETFramework的体系结构 操作系统 公共语言运行时 CLR VC Net C VB Net VJ NetFramework类库 FCL NETFramework的组件 基本框架类 WinForms ADO Net和XML类 NetFramework NetFramework类库 ASP NET CLS CLR CTS 公共语言运行库 公共语言运行库是建立在操作系统之上公共语言运行库作用管理内存线程执行代码执行代码安全验证编译以及其他系统服务 托管代码定义 以运行库为目标的代码称为托管代码C 分成两种 一种是托管C 另外一种是非托管C C 是以运行库为目标设计的 因此用C 编写的代码基本上为托管代码不以运行库为目标的代码称为非托管代码 NET提供了与非托管代码互操作的服务 比如与COM互操作的Interop服务 NETFramework框架类库 NETFramework类库提供一组丰富的接口以及抽象类和具体 非抽象 类可以按原样使用这些具体的类 或者在多数情况下从这些类派生自己的类若要使用接口的功能 既可以创建实现接口的类 也可以从某个实现接口的 NETFramework类中派生类 公共语言规范 CLS 公共语言规范 CLS 是许多应用程序所需的一套基本语言功能CLS规则定义了通用类型系统的子集CLS通过定义一组开发人员可以确信在多种语言中都可用的功能来增强和确保语言互用性大多数由 NETFramework类库中的类型定义的成员都符合CLS 使用VS NET进行 NET应用开发 Windows应用程序开发ASP NET应用程序开发移动设备应用程序开发WebServices构建 NET分布式系统 NET特点总结4 1 统一的API 传统的编程模式VB VC Delphi采用不同的编程模式和编程APIWindows编程和Web编程采用不同的编程模式 NET编程模式将所有的API组织在框架类库中 VB NET C VC NET可以调用相同的API实现相同功能ASP NETWeb窗体编程模式类似于VB的Web窗体设计器 NET特点总结4 2 自动内存管理 传统内存管理模式开发者可以操纵内存 为内存管理提高了灵活性 同时也降低了安全性 稳定性COM中采用引用计数的方法实现内存管理 但是容易出现循环引用的问题 NET内存管理模式由 NETFrameworkCLR实现内存分配由 NETFrameworkCLR实现垃圾收集和垃圾回收 NET特点总结4 3 安全类型系统 在 NET框架中不会有不安全的类型表不会产生某一个类型的指针指向另外一个类型的情况不可能有无初始化的变量 不可能索引超出边界的数组等等 NET特点总结4 4 安全意外处理零安装 自我描述 更好的版本控制多语言支持与COM的互操作性XMLWebService 总结 NET是以Internet为中心的一种应用程序开发平台 此平台的主要优点在于用户可以随时随地使用与 NET兼容的设备访问所有重要数据 Microsoft NET主要由三个组件构成 即Microsoft NET产品和服务 NET平台本身以及第三方 NET服务 NET平台构成了独立于语言 可以从各种 NET兼容设备上运行的应用程序的基础 NET平台基于两种核心技术 即XML和Internet协议套件 C 基础知识 第三章 返回 回顾 第二章 Microsoft NET的组件 NET是以Internet为中心的一种应用程序开发平台 此平台的主要优点在于用户可以随时随地使用与 NET兼容的设备访问所有的重要数据 Microsoft NET主要由三个组件组成 即Microsoft NET产品和服务 NET平台本身以及第三方 NET服务 NET平台构成了独立于语言 可以从各种 NET兼容设备上运行的应用程序的基础 NET平台基于两种核心技术 即XML和Internet协议套件 目标 讨论C 中的类讨论C 程序中的流程控制阐释C 中的基本数据类型讨论装箱和取消装箱的概念讨论结构讨论枚举类型使用C 编写简单程序 Microsoft NET 开发Windows应用程序和Web应用程序的新平台支持超过20种语言为Windows编程的可用功能带来了变革 C 简介 充分利用了 NET平台C 编译器是 NET家族中最高效的编译器C 的最新换代产品通过强制脚本类型检查 提高了开发人员的工作效率并增强了安全性允许有限制地使用本机指针 C 程序流 一个简单的C 程序 本程序将显示消息 这是HelloWorld程序 C 编程构造3 1 C 中的变量以下列方式进行声明 AccessModifierDataTypeVariable C 编程构造3 2 如果需要使用任何关键字作为变量名称 必须为该变量名称添加前缀 本程序的输出消息 string是一个关键字但在本例用作一个变量名 C 编程构造3 3 usingSystem classTest staticvoidMain int array1 newint 5 Console WriteLine 10 array1 2 本示例的输出结果是0 默认值 常用数据类型的默认值 C 中的输入 输出3 1 使用System命名空间中的Console类的方法最常用的方法 Console ReadLine Console WriteLine C 中的输入 输出3 2 usingSystem classTestDefaultValues staticvoidMain intnumber result number 5 result 100 number Console WriteLine 当100与数字 0 相乘时 结果为 1 number result 突出显示的代码行起着占位符的作用 即指定变量结果值的显示位置 index alignment formatString 可选整数 指示包含格式化值的区域的最小宽度 如果格式化值的长度小于对齐 则用空格填充该区域 如果对齐为负 则格式化的值将在该区域中左对齐 如果为正 则格式化的值将右对齐 如果没有指定对齐 则该区域的长度为格式化值的长度 如果指定对齐 则需用逗号分隔 G 常规 E或F中较短的F 浮点数 常规表示法E 用E表示法表示的浮点数 其中 E代表10的次幂 N 带有分隔符的浮点数 在美国为逗号 C 货币 带有货币符号和分隔符 在美国为逗号 D 十进制数 仅用于整型X 十六进制数 仅用于整型 C 中的输入 输出3 3 示例接受了一行的用户输入 并将其回显为输出 if结构2 1 用于执行条件分支语法 表达式需要始终为Boolean类型的表达式 If结构2 2 上面的代码段将显示错误消息 错误CS0029 无法将类型 string 隐式转换为类型 bool switch语句2 1 语法 每个case分支必须有一个break语句 switch语句2 2 Switch结构可以充当多个if语句 循环结构 当特定条件为true时执行一组特定的指令 或将特定指令组执行一定次数循环结构的类型 while循环do循环for循环foreach循环 while循环 while循环执行一组语句 直至指定条件为falsebreak语句 随时跳出循环continue语句 跳过当前循环 并开始下一循环 do循环 语法 在条件检查之前 循环体中的语句组至少执行一次 for循环 语法 intsum 1 for count 0 count 10 count sum for语句循环10次 sum的的最终结果是10 foreach循环2 1 foreach循环用于通过集合或数组来循环语法 foreach循环2 2 usingSystem publicclassForEachLoop staticvoidMain String args intindex String array1 newString 3 for index 0 index 3 index array1 index args index foreach StringstrNameinarray1 Console WriteLine strName C 中的构造函数 C 中的构造函数与类同名 classMyConstructorEx publicMyConstructorEx MyConstructorEx构造函数 C 中的析构函数 C 中的析构函数与类也同名 classMyConstructorEx publicMyConstructorEx MyConstructorEx构造函数 public MyConstructorEx MyConstructorEx析构函数 C 的基本类型2 1 C 的数据类型分为两种基本类型值类型int char和结构引用类型类 接口 数组和字符串 C 的基本类型2 2 值类型 仅在内存中保存值 存储与堆栈中引用类型 将对象的地址存储与堆中 null表示没有应用任何对象 值类型 variableVal是值类型输出结果为100 而不是200 引用类型 usingSystem classDataTypeTest publicintvariableVal classDataTypeTestRef staticvoidMain DataTypeTestdataTest newDataTypeTest dataTest variableVal 100 funcDataTypeTest dataTest Console WriteLine dataTest variableVal staticvoidfuncDataTypeTest DataTypeTestdataTest inttempVar 10 dataTest variableVal tempVar 20 值类型和引用类型 装箱和取消装箱 装箱是从值类型到引用类型的转换取消装箱是从引用类型到值类型的转换示例 C 中的数据类型处理 C 提供了一种 统一类型系统 C 中所有数据类型都是从一个类即object类派生而来的 静态成员 成员不与任何特定的对象或类关联仅可以有一个实例 staticintstaticMem staticintinstanceCount instanceCount实现 数组 一组具有类似数据类型的值属于引用类型 因此存储于堆中C 中的数组声明语法如下 DataType numberofelements ArrayName 结构 结构属于值类型可以有方法可以拥有构造函数不能实现继承 structstructEx publicintstructDataMember publicvoidstructEx 构造函数实现 publicvoidstructMethod1 structMethod1实现 枚举类型2 1 publicclassHoliday publicenumWeekDays Monday Tuesday Wednesday Thursday Friday publicvoidGetWeekDays StringEmpName WeekDaysDayOff 处理WeekDays staticvoidMain HolidaymyHoliday newHoliday myHoliday GetWeekDays Richie Holiday WeekDays Wednesday 程序中声明了仅接受5个值的枚举类型WeekDays 枚举类型2 2 C 中的枚举数都有与值相关联的数字默认情况下 枚举数的第一个元素被指定为0值 后续的各个枚举数元素的值依次递增默认值可以在初始化阶段中重写 编译和运行 步骤1 在记事本中输入代码步骤2 使用 cs扩展名保存文件步骤3 切换至DOS提示符 再输入以下命令要运行C 文件 可以键入不带扩展名的文件名 总结 在C 中 数据类型分为两种基本类型 即值类型和引用类型 装箱是指从值类型到引用类型的转换 而取消装箱是指从引用类型到值类型的转换 C 中的结构内部可以定义方法 也可以拥有构造函数 枚举类型是声明一组命名常数的独特类型 在C 中实现OOP概念 第四章 返回 作业点评 变量没初始化结构的构造函数没有指定参数Stringstring引用 字符串 String是固定不变的 在进行字符串连接的时候是新建一个字符串 进行连接后 最后赋值 如果对String赋值多次 就会在内存中保存多个这个对象的副本 浪费系统资源Csc静态其它例子 回顾 第三章C 基础C 变量的声明方式如下 AccessModifierDataTypeVariableName 在C 中 数据类型分为两种基本类型 即值类型和引用类型 装箱是指从值类型到引用类型的转换 而取消装箱是指从引用类型到值类型的转换 C 的结构内部可以定义方法 也可以拥有构造函数 目标 在C 中使用构造函数在C 中使用析构函数解释垃圾回收器的工作原理讨论方法重载讨论操作符重载在C 中使用继承讨论C 中的重写 C 中的构造函数3 1 是类中的特殊类型的方法是每次创建对象时要调用的函数通常用于初始化与类同名不返回值 构造函数3 2 usingSystem 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 有析构函数的对象占用的资源较多 因为即使不再需要它们 它们仍会在内存中驻留较长时间 销毁过程作为独立的线程执行 该线程会占用大量资源 GC Collect 强制进行垃圾回收 方法重载 重载方法有两种方式指定不同个数的参数指定不同类型的参数 不同参数个数的方法重载 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 以下是可以重载的操作符列表 publicstaticresult typeoperatorunary operator op typeoperand publicstaticresult typeoperatorbinary operator op typeoperand op type2operand2 操作符重载3 3 usingSystem 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 2 usingSystem 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 中 析构函数由垃圾回收器调用 在C 中 有两种方式来重载方法 指定不同个数的参数 指定不同类型的参数C 允许重载操作符 总结2 2 重载操作符意味着使操作符 例如 加法操作符 在应用于结构或类的某些对象时具有不同的行为C 不支持多重继承要重写基类的现有方法 需要在继承类中声明一个同名的新方法 并在方法名称前附加new关键字 C 中的高级OOP概念 第五章 返回 回顾 第四章 实现C 中的高级OOP概念带参数的构造函数是指接受参数的构造函数 在C 中 析构函数由垃圾回收器调用 在C 中允许方法重载在C 中允许操作符重载C 不支持多重继续要重写基类的现有方法 需要在继承类中声明一个同名的新方法 并在方法名称前附加new关键字 目标 讨论多态性使用虚函数讨论抽象基类讨论接口的概念使用接口 C 中的多态性6 1 多态性和虚函数关系非常密切多态性允许在运行时实现派生类的方法需要从基类的对象调用派生类方法时 可以使用虚函数 publicclassShapeObj publicvirtualvoidarea System Console WriteLine 这是一个虚Area方法 C 中的多态性6 2 C 中的多态性6 3 publicclassCircle ShapeObj publicoverridevoidarea System Console WriteLine 这是Circle的Area 方法 publicclassRectangle ShapeObj publicoverridevoidarea System Console WriteLine 这是Rectangle的Area 方法 publicclassSquare ShapeObj publicoverridevoidarea System Console WriteLine 这是Square的Area 方法 定义了三个类 Rectangle Circle和Square 这些类是从ShapeObj类派生的 并且重写了ShapeObj类的area 方法 override关键字用于重写基类函数area C 中的多态性6 4 publicclassPolymorphismExp publicstaticvoidmain ShapeObj objArray newShapeObj 4 objArray 0 newShapeObj objArray 1 newRectangle objArray 2 newCircle objArray 3 newSquare foreach ShapeObjiterateArrayinobjArray iterateArray area 每个派生自ShapeObj的类的area 方法都被调用 C 中的多态性6 5 classSecondExp publicintfirstMethod return secondMethod thirdMethod publicvirtualintsecondMethod return 10 publicintthirdMethod return 20 classDerivedClass SecondExp publicoverrideintsecondMethod return 30 classTest Publicstaticvoidmain DerivedClassobjDerived newDerivedClass System Console WriteLine objDerived firstMethod 在DerivedClass中重写基类中的虚函数secondMethod C 中的多态性6 6 多态性是智能重写多态性 在运行时决定调用哪个方法多态性需要虚函数 而虚函数则需要进行方法重写 抽象基类2 1 抽象基类是可以被继承的类不能创建抽象类的对象C 允许在类定义中添加abstract修饰符来创建抽象基类 可以有实现的方法 抽象基类2 2 usingSystem abstractclassBaseClass publicabstractvoidabstractFunc publicvoidnonAbstractFunc Console WriteLine 这是nonAbractFunc 方法 classDerivedClass BaseClass publicoverridevoidabstractFunc Console WriteLine 这是abstractFunc 方法 classTest staticvoidmain DerivedClassobjDerived newDerivedClass BaseClassobjBase objDerived objBase abstractFunc objDerived nonAbstractFunc 在派生类DerivedClass中重写抽象基类的抽象方法abstractFunc 接口4 1 接口相当于纯抽象基类它只能包含抽象方法 而不能包含任何方法实现实现特定接口的类必须实现该接口列出的成员只能有方法属性索引的声明只能是publicinternal方法声明不能有访问修饰符 publicinterfaceIFile intdelFile voiddisFile 接口4 2 publicclassMyFile IFile publicintdelFile System Console WriteLine DelFile实现 return0 publicvoiddisFile System Console WriteLine DisFile实现 classTest staticvoidmain MyFileobjMyFile newMyFile objMyFile disFile intretValue objMyFile delFile 类MyFile继承了接口IFile并实现了接口中定义的方法delFile 和disFile 接口4 3 定义一个类 publicclassBaseforInterface publicvoidopen System Console WriteLine 这是BaseforInterface的open方法 接口4 4 publicclassMyFile BaseforInterface IFile publicintdelFile System Console WriteLine DelFile实现 return0 publicvoiddisFile System Console WriteLine DisFile实现 classTest staticvoidmain MyFileobjMyFile newMyFile objMyFile disFile intretValue objMyFile delFile objMyFile open 定义一个继承类BaseforInterface和接口Ifile的新类MyFile 示例输出如下图 多接口2 1 C 允许多接口实现定义一个接口 仅包含一个方法 publicinterfaceIFileTwo voidapplySecondInterface 多接口2 2 publicclassMyFile BaseforInterface IFile IFileTwo publicintdelFile System Console WriteLine DelFile实现 return0 publicvoiddisFile System Console WriteLine DisFile实现 publicvoidapplySecondInterface System Console WriteLine ApplySecondInterface实现 classTest staticvoidmain MyFileobjMyFile newMyFile objMyFile disFile intretValue objMyFile delFile objMyFile open objMyFile applySecondInterface 本示例实现多接口继承 与前面代码合并后输出的结果如下 显式接口 当两个接口中具有同名的方法时 可以使用显式接口实现 publicinterfaceIFile intdelFile voiddisFile publicinterfaceIFileTwo voidapplySecondInterface voiddisFile publicclassMyFile BaseforInterface IFile IFileTwo voidIFile disFile System Console WriteLine DisFile的IFile实现 voidIFileTwo disFile System Console WriteLine DisFile的IFileTwo实现 staticvoidMain string args MyFileobjM newMyFile IFileFobj objM IPict引用Fobj DisFile IFileTwoFTobj objM IPictManip引用FTobj DisFile 接口继承 可以通过将多个接口组合到一起来创建新的接口 interfaceIAllFile IFile IFileTwo 如果需要 除了IFile和IFileTwo操作之外 还可以添加更多操作 总结2 1 需要从基类的对象调用派生类方法时 可以使用虚函数重写和多态性之间的区别在于 在多态性中 要调用哪个方法的决定是在运行时做出的 抽象基类是至少包含一个抽象成员 没有实现的方法 的类 不能创建抽象基类的新实例 没有实现的方法称为操作 总结2 2 接口是纯抽象基类 它只能包含抽象方法 而不能包含任何方法实现 一个类可以实现多个接口 事实上 类能够从另一个类继承 也能够实现接口 命名空间 第六章 返回 回顾 第五章 C 中的高级OOP概念当需要从基类的对象中调用派生的类方法时 虚拟函数十分有用 重写和多态之间的区别是 在多态中 调用哪种方法的决定是在运行时做出的 抽象基类是至少包含一个抽象成员 没有实现的方法 的类 不能创建抽象基类的新实例 没有实现的方法称为 操作 接口是纯抽象基类 它只能包含抽象方法 而不包含方法实现 一个类可以实现多个接口 目标 解释命名空间创建自定义的命名空间讨论命名空间命名的类型使用命名空间指令为命名空间创建别名了解 NET基类库 命名空间 用于避免命名冲突专用于组织代码当代码要在其他某个应用程序中重用时 可以降低复杂性 声明命名空间2 1 与类的声明过程相似语法 namespaceNameSpaceName 此处列出该命名空间的全部类 声明命名空间2 2 classSamsungTelevision classSamsungWalkMan classSonyTelevision classSonyWalkMan namespaceSamsung classTelevision classWalkMan namespaceSony classTelevision classWalkman 使用命名空间解决命名冲突更简洁 更有条理 结构更清晰 嵌套命名空间 在一个命名空间内声明另一个命名空间 namespaceSony namespaceTelevision classT14inches classT21inches namespaceSony Television classT14inches classT21inches 第二种命名空间的方法在C 中可用 在C 中是不可用的 访问修饰符和命名空间 命名空间是隐式公共的命名空间不能为受保护的 私有的或内部的 publicnamespaceSony 错误 privatenamespaceSamsung 错误 在声明命名空间时前面不应加任何访问修饰符 限定命名 要在类所属的命名空间内使用该类 只需要指定该类的名称要在类所属的命名空间之外使用该类 必须使用该类的完全限定名来引用它Namespace classname 非限定命名 namespaceSony classTelevision classWalkMan TelevisionMyEntertainment newTelevision 在类所属的命名空间内使用该类时 只需指定类名 这称为 非限定名称 限定命名 示例 usingSony usingSamsung usingSystem namespaceSony namespaceTelevision classT14inches publicT14inches Console WriteLine 一台14英寸的电视机 classT21inches publicT21inches Console WriteLine 一台21英寸的电视机 namespaceSamsung classTelevision Sony Television T14inchesmyEntertainment newSony Television T14inches classTest staticvoidMain Samsung TelevisionmyEntertainment newSamsung Television 限定命名是在类名称前加上点操作符和名称空间 using命名空间指令 使用限定命名会使代码变长且容易混淆使用using命名空间指令可以使长且容易混淆的名称变得简短而且有意义 Sony Television T14inchesTelevision newSony Television T14inches usingSony Television T14inchesTelevision newT14inches T21inchesTelevision2 newT21inches 有效和无效的命名空间声明 二义性名称2 1 usingSony usingSamsung classTest staticvoidMain TelevisionMyEntertainment newTelevision 这会导致错误 因为Sony Samsung命名空间都有Television类 程序中不知调用哪个命名空间的类 类名称存在二义性 二义性名称2 2 usingSony usingSamsung classTest staticvoidMain Samsung TelevisionMyEntertainment newSamsung Television 在类名存在二义性的情况下 只能像代码段中那样使用限定的命名空间 using别名指令 using别名指令提供了一种功能 可以从命名空间中只提取一个类 并将其放入作用域中 usingT21inches Sony Televisions T21inches classTest staticvoidMain T21inchesM newT21inches using别名名称 到命名空间或类的完全限定路径 基类库 是预先编写的代码的集合 这些代码可以很容易地合并到应用程序中 并在应用程序中加以使用基类库可以被所有 NET支持的语言共享根据其功能 BCL FCL 中的类被归类到相应的命名空间中 最常用的命名空间和类 命名空间System Array3 1 提供用于操纵数组的类和方法 usingSystem classTest staticvoidMain int arrayToReverse 1 2 3 4 5 6 7 Console WriteLine 反转前数组的内容 n displayArray arrayToReverse Array Reverse arrayToReverse Console WriteLine n n反转后数组的内容 n displayArray arrayToReverse publicstaticvoiddisplayArray ArraymyArray foreach intarrValueinmyArray Console WriteLine arrValue 命名空间System Array3 2 上示例的输出结果 命名空间System Array3 3 命名空间System Array其他方法 命名空间System Threading3 1 在程序中实现多线程同时运行同一程序或程序不同部分的一个或多个实例 命名空间System Threading3 2 示例 usingSystem usingSystem Threading classTest staticvoidMain ThreadnewThread newThread newThreadStart ThreadToRun newThread Start ThreadToRun staticvoidThreadToRun for intcount 1 count 10 count Console WriteLine 线程数为 0 count 命名空间System Thr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创意设计团队任务拆分及验收流程标准手册
- 2025年副高内科护理试题及答案
- 2025年机关事务管理局节能中心工程师招聘笔试预测试题及答案
- 土石方运输业务协议模板
- 2025化工用品仓库租赁合同模板
- 农村土地租赁及用途承诺合同
- 明星推广策略协议
- 品牌形象推广及授权协议
- 支付宝理赔申请书
- 化学实验安全操作规范教案
- 高速公路服务区升级转型商业计划书
- 数学原来这么有趣
- 常见行政案件笔录模版
- 手术室甲状腺切除术手术配合护理查房
- 国家电网电力中级职称考试题
- 数据库设计规范说明
- 建设工程消防验收评定规则
- 肾内科临床技术操作规范2022版
- 山东省临沂市兰山区2022-2023学年小升初数学自主招生备考卷含答案
- 2023年中国工商银行软件开发中心春季校园招聘500人笔试模拟试题及答案解析
- 地质勘查钻探岩矿心管理通则
评论
0/150
提交评论