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

    05 面向对象编程类和对象.pdf

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

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

    05 面向对象编程类和对象.pdf

    第5章 类和对象 第5章 类和对象 .NET 在线培训学习资料 更多学习材料,请到 下载 在面向对象程序设计中,类是一个非常重要的概念,类可以定义为对于数据以及数据依赖的功能进行的封装。例如,水果在蔬菜中就是一个类,苹果、桃子等水果都是水果类的派生类。水果具有的色、香、味等功能就是水果类的属性,将水果和水果的属性结合起来的,才能称之为水果类。如果水果类只是单纯的具有一个空的水果类定义,则称之为虚类。对象则是类的一个明确化定义,在程序中不能直接使用类的定义,这是任何面向对象程序语言设定的基础。如果想要使用类,则需要事先声明一个对象,该对象被称之为是类的一个“实例化”,通过对象才能使用类的属性和成员函数,正如前面章节中多次使用的那样。本章将系统的介绍类和对象的各种基础概念,第一部分解释和理解类的概念,包括类的实例成员、访问修饰符、构造函数、初始化函数等。第二部分将分析静态成员以及常量和只读字段的差异性,也将讨论类的继承问题。5.1 理解类的概念 在现实世界中,分类是无处不在的。例如,自然界是由有机体和无机体组成,同样,动物、植物都是有机体,也就是有机体的两种分类,而动物又可以区分出很多种,植物也同样如此,这反映在分类的概念上,如图 5-1 所示。第 5 章 类和对象 115 图 5-1 自然界的分类 为了对这些分类的概念有清晰的描述,产生了类的概念。类是对分类的准确描述,通过类的概念可以将每个分类的特征加以区分,产生不同的类别。类别同时也是自然界进化的产物,如果说对事务的直接表述是从微观看问题的话,对类的描述和总结就是从宏观的角度分析事务的性质。面向对象程序设计就是对上述思想的继承,所有的面向对象语言基本上都遵循这个思想,C也不例外。在 C语言中,类是编程中的基本要素。每个函数和变量都要依赖于一个类来实现。例如,在前面的实例程序中,每个命名空间下面都会产生一个与工程项目名称相同的类,诸如 Main()函数等函数都归属于这个类,也可以将其称之为“主”类。如果程序较为复杂,描述的类比较多,则各个类之间的关系是相互平行的,不存在相互之间的归属关系,除非一个类是继承自另外一个类的情况出现。注意 无论一个程序中的类有多少,程序的入口 Main()函数均只有一个,也就是“主”类中的Main()函数,其余类中均不能再出现 Main()函数,其成员函数只能作为简单的成员出现,而不是可直接调用的入口函数。5.2 定义类 C语言中定义一个类是件非常简单的事情。先来看一个简单的类声明:Class Employee private long employerID;类的声明中使用到的关键字是 Class,这个关键字表明了接下来定义的是一个类类型,而不是其余。接着,在 Class 的后面需要定义一个类的名称,类的名称可以随便取,这里使用的是 Employee。在类的内部可以定义类的成员,如成员函数、成员变量等,这里定义的是一个私有的 long 型变量employerID,这个变量是私有的变量,所以只能在 Employee 类的内部使用,如果是 Employee 类的子类希望调用该变量,编译器会禁止这么做。在有些情况下,熟练的 C程序员也会在类的定义之后加上一个分号(;),这样做也是被允许的,如下所示的两段代码是相同的:Class Myclass /Members Class Myclass 116 /Members;5.2.1 类的成员 直观的说,类是由成员构成的。在一个类的定义中,任何东西都可以被定义成类的成员,这些东西包括成员变量和成员函数。下面是可以定义为类的成员的各种类型:?字段:字段用于保存值的成员变量,可以对一个字段应用几个修饰符,这主要取决于对于变量的使用情况。如变量可以应用的修饰符有 static、readonly 和 const 等。?方法:方法是对对象进行操作的实际代码段,各种成员函数和结构类型都可以称之为方法。?特性:特性是一种特殊的方法,从感觉上可以认为特性是一种新的类型,使用者在使用时感觉更像是在使用字段,而不是使用方法,这样可以得到更好的抽象度,特性也被称之为 smart field。?常量:变量的一种类型,指的是值不会改变的变量,与 readonly 有所区别。?索引器:索引器的使用感觉与数组差不多,有时也被称之为 smart array,这种类型使得在操作时就好像是在操作数组一样。例如,ListBox 类拥有用于操作和表示控件数据的字段和方法,但是这个类从概念上说将由其显示的数据数组来定义。索引器通过下标使用实际的对象。?事件:面向对象语言是事件驱动型语言,就是说所有的执行代码都以事件的形式出现。例如,在 Windows 模式下编程,鼠标点击就是一种事件;窗口的放大和缩小也是一种事件,都有相应的事件在背后驱动。?操作符:C#语言通过操作符重载提供了向类中添加标准数学操作符的能力,这样可以写出更直观的代码。5.2.2 访问修饰符 访问修饰符用于指定给定的成员对于自身之外的代码是否可见或者是可访问,这些修饰符称之为访问修饰符,表 5-2 显示了可用的修饰符和其说明。表 5-2 访问修饰符 访问修饰符 说明 Public 可以在类定义和派生类的层次结构之外访问此成员 Protected 在类之外是不可见的,只能在派生类中访问 Private 不能在定义此成员的类之外访问,即使是派生类也不能访问 internal 只在当前编译单元中可见,internal访问修饰符根据代码所在的位置,而不是类在层次结构中的位置决定可见性 注意 C#语言中默认的访问修饰符是 Private,所以如果想使用其余修饰符的特性,需要亲自定义。下面举一个例子说明如何使用这些访问修饰符,如下代码所示:Class Access public int a;public int b;protected int c;protected int d;int e;第 5 章 类和对象 117Class Binary Access ab=new Access();ab.a;/正确 ab.c;/错误 ab.e;/错误 Class Ceshi:Access Access ab=new Access();ab.a;/正确 ab.c;/正确 ab.e;/错误 在这个例子中,定义了三个类。一个类是 Access,该类包含 5 个成员变量,其中,整型变量 a 和 b被声明为 public 变量,变量 c 和 d 被声明为 protected 变量,变量 e 被声明为默认变量,也即 private 变量。接着定义了类 Binary,在该类中新定义一个 Access 类的对象 ab,跟着使用 ab 调用 Access 的类成员。其中,首先调用了 Access 的类成员 a,因为 a 被声明为 public 变量,所以这里对 a 的调用是正确的。跟着调用成员 c,因为 c 被定义为 protected 变量,所以在类 Access 和其派生类之外是不可以调用该成员的,这种调用方式错误的。同样,调用成员 e 也是错误,因为默认情况下变量默认类型是 private,这是不允许在类 Access 之外被调用的。跟着,从类 Access 派生出了类 Ceshi,并在该类中调用类 Access 的成员。在这里,类 Access 被称之为 Ceshi 类的父类。调用 a 是正确的,因为 a 是 public 变量。调用 c 是正确的,因为 c 是 protected 变量,可以在派生类中被调用。调用 e 是错误的,因为该成员被定义为 private,在类之外是不允许被调用的。5.2.3 Main()方法 通过前面很多的实例演示,读者会发现在所有的完整程序中都只有一个 Main()函数。是的,Main()函数作为 C#语言程序的入口函数,在所有程序中都限定只能有一个 Main()函数存在,原因不难理解,因为入口函数多了,编译器就无法判别编译的起始地址在何处而导致程序编译错误。但是,从另外一个方面分析,Main()函数位于哪个类中,这个是无所谓的,只要存在即可,这是 C#的特点。基本上所有的程序中,Main()函数都被定义为静态函数,也即要在 Main()函数之前使用 static 修饰符进行限定。下面是一个典型的 Main()的例子:Class Employee private int employerID;Class WorkClass static public void Main()Employee emp=new Employee();118 这个例子是一个典型的类定义和使用的例子,例子首先在定义了一个类 Employee,然后赋予类了一个 private 修饰的成员变量。为了使用 Main()函数,跟着声明了一个类 WorkClass,在类中定义了静态的Main(),并且声明这个函数是 public 的,这样做的目的是保证程序能正常使用 Main()函数。5.2.3.1 命令行参数 在有些情况下,如读者需要编写命令行程序,这时可能需要使用者输入一些命令参数之类的字符以响应程序的执行。这些都是 Main()函数的参数的工作,通过将 Main()加上一些参数,可以像处理数组一样处理用户的响应,如下面程序所示的那样。下面的代码中将要求用户在命令行模式下输入一行参数,程序会自动把参数列出来。(1)打开 Visual Studio 2005 编辑器,单击“文件”菜单,选择“新建项目”命令,打开 Visual Studio2005编辑器的创建向导,接着语言选择 C#,选择“控制台应用程序”,如图 5-3 所示。图 5-3 带命令行的 main 函数(2)修改生成的代码文件如下所示:using System;using System.Collections.Generic;using System.Text;namespace main class Program static void Main(string args)Console.WriteLine(nYou specified 0 arguments,args.Length);foreach(string arg in args)Console.WriteLine(Argument:0,arg);第 5 章 类和对象 119(3)使用快捷键“Ctrl+F5”,执行程序,然后在命令行下转到相应的 Debug 目录,手工运行程序,如图 5-4 所示。图 5-4 带参数的 main 函数的执行效果 读者在 main 命令之后,随意输入多个字符串作为参数,程序都会自动将参数读出。5.2.3.2 返回值 在大多数程序中,Main()基本上都没有返回值,如下代码是最常见的形式:Class classtype /members public static void Main()/Main 函数主体 但是,有的时候,为了反应命令行模式下的程序执行的好坏,也需要在 Main()函数中设置返回值,表明 Main()函数的错误类型,这种处理方式在 GUI 的程序设计中不会遇到,多数都是命令行程序中才会使用的技术,典型的代码如下所示:Class classtype public static int Main()/返回 0,表示成功,其余值表示失败 return 0;在这里需要注意的是,在以前的程序中都使用的 Main()是 void 类型,意思是该 Main()函数并不返回值,无论对错。这里为了演示返回值,这里将 void 改成 int 型,因为返回的值是数字整型变量。下面这个程序演示了返回值的实例,在该实例中,使用了一个批处理文件 a.bat,以显示出返回值的 120 内容。这是因为操作系统并不将返回值直接显示出来,而是暂时存储在变量%ERRORLEVEL%中,为了将该值显示出来,显得更直观一些,这里使用了批处理文件。(1)打开 Visual Studio 2005 编辑器,单击“文件”菜单,选择“新建项目”命令,打开 Visual Studio2005编辑器的创建向导,接着语言选择 C#,选择“控制台应用程序”,如图 5-5 所示。图 5-5 Main 返回值的程序(2)修改生成的代码文件如下所示:using System;using System.Collections.Generic;using System.Text;namespace return class Program static int Main(string args)Console.WriteLine(Main return);Console.WriteLine(args);foreach(string str in args)if(str.Length 5)Console.WriteLine(str);return 0;else return 200;return 0;第 5 章 类和对象 121(3)使用快捷键“Ctrl+F5”,执行程序。(4)在命令行下转到相应的 Debug 目录,使用记事本手工编辑一个批处理文件,代码如下所示:rem test.bat echo off return if%ERRORLEVEL%=0 goto good :fail echo Execution Failed echo return value=%ERRORLEVEL%goto end :good echo Execution Succeded echo return value=%ERRORLEVEL%goto end :end(5)将记事本另存为 a.bat 文件,如图 5-6 所示。图 5-6 保存为批处理文件(6)运行程序 a.bat,结果如图 5-7 所示。图 5-7 不带参数的执行结果 122(7)修改批处理文件 a.bat,在调用 return 程序的后面加入参数 abcd,如下所示:rem test.bat echo off return abcd if%ERRORLEVEL%=0 goto good :fail echo Execution Failed echo return value=%ERRORLEVEL%goto end :good echo Execution Succeded echo return value=%ERRORLEVEL%goto end :end 或者在调用 return 程序的后面加入参数 abcdef,如下所示:rem test.bat echo off return abcdef if%ERRORLEVEL%=0 goto good :fail echo Execution Failed echo return value=%ERRORLEVEL%goto end :good echo Execution Succeded echo return value=%ERRORLEVEL%goto end :end(8)修改后,分别运行批处理程序 a.bat 的结果如图 5-8 所示。第 5 章 类和对象 123 图 5-8 带参数的执行结果

    注意事项

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

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




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

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

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

    收起
    展开