C# 讲义-类、对象、访问控制、字段、方法、静态成员.doc_第1页
C# 讲义-类、对象、访问控制、字段、方法、静态成员.doc_第2页
C# 讲义-类、对象、访问控制、字段、方法、静态成员.doc_第3页
C# 讲义-类、对象、访问控制、字段、方法、静态成员.doc_第4页
C# 讲义-类、对象、访问控制、字段、方法、静态成员.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

计算机语言C# 讲义 - 11 -枚举示例enum 枚举值1, 枚举值2, 枚举值3,.enum mycolor lightblue, pink, yellowgreen 枚举应用示例作用:枚举值作为方法的参数,来表达一种选择第11章 Visual C# OOP技术(1)面向对象基本思想、类和对象、访问修饰符第4章 面向对象与对象模型4.1 面向对象基础1. 类和对象类:具有同种特性和行为的一类事物的抽象描述。对象:类实例化的结果,特指某一个具体事物。(书:数据结构、C语言、数据库; 饭卡:张三的饭卡、李四的饭卡)2面向对象基本原则:抽象、封装、继承和多态1)抽象:根据程序设计需要,确定对象的特性和行为,排除冗余细节的思维过程。(需求分析)2)封装:将数据与操作数据的方法(函数)捆绑成相对独立的程序单元,即通过特定语法来创建类。封装的目的是:实现信息隐藏,保护内部数据。(外界代码无法访问到对象内部的数据,外界代码只能通过对象的对外接口来与对象交互,不了解其内部操作,例子:手表,收音机)3)继承:类之间可构成父子层次关系,一个类可以继承另一个类中所有的数据成员和成员函数,还可以定义自己的数据成员和成员函数,其目的是实现代码的可重用性。(其它类型的程序设计中数据类型之间是独立的,C#中类可构成父子关系,子类拥有父类的所有的类的成员,并扩充自己的东西)4)多态:指对象运行时呈现不同行为的能力。同样的方法,不同子类的对象运行时,执行不同的操作。检修电器:不同的电器,检修的范围不同。3类的基本结构:类使用一组公开的字段、属性、方法、事件来定义与外界的接口,用户只须遵循接口规范来使用类。4.2类和对象1类的定义基本格式访问修饰符class类名:基类名类成员列表;(无分号)2类的实例化用new关键字实例化3类的访问修饰符 P87 表4-1 4类的成员:类可以由哪些元素组成。P885类的成员的访问修饰符 P896类的成员字段字段是类中声明的变量,用来在对象中存储信息。Eg:Person类包括姓名,年龄和性别(枚举)课堂练习:建一个书的Book类,包括以下字段:书名、作者、出版社、价格、页数,均为Public成员,在Class1的Main 函数中声明该类的一个对象并赋值。7类的静态字段 static1类的静态成员不属于类的某个对象,而属于类本身所有,和对象无关。2静态成员通过E.M来引用时,E为类名,不是对象名。Eg7.1 声明类Student拥有静态字段 ClassName和ClassStuCount保存班级名称和人数,拥有字段stuID和stuName保存学生的学号和姓名,声明该类的对象并赋值输出。/测试班为 096307301陈伟、096307302 陈亚南作业:声明类专业Major,拥有静态字段DepartmentName(院系名),拥有字段:majorID(专业编号)、majorName(专业名)和majorStuCounts(专业人数),在Program类的Main方法中声明对象并赋值输出。(静态不仅仅是字段、属性、方法都可以是静态的)思考题:修改例子7.1,声明Student类的数组,赋值,使用foreach语句循环输出。4.4方法方法:类里面的函数1 语法注 方法若无返回值,返回类型应为void。注 方法若有返回值,应在方法体中使用return语句返回值。2 方法的重载类可以拥有重名的方法,但它们必须拥有不同的参数列表。3 静态方法1) 静态方法表达的是一类事物共同具有的抽象方法,而不是类的实例所独有的。2) 由类名进行引用。3) 静态方法主要用于提供整个类实例共有的工具函数。4) 静态方法中只能使用参数值、常量、类的静态成员,不能访问类的实例成员。eg9.1 编写类MyMath,拥有静态字段pi(),实例字段radius(半径),实例方法Perimeter返回周长,Area返回面积,另包含2个静态方法plus,一个返回整型加法值,一个返回字符串加法值。练习:新建类Stu,包括以下字段:学号、姓名、语文成绩、数学成绩、英语成绩,提供方法TotalScore返回总分,提供方法AvgScore返回平均分,提供静态方法Info,向控制台输出“西城中学初三(2)班中考成绩”。在Main()中使用以上方法。作业:创建日期类MyDay,它包含三个整型变量year, month, date。设置2个构造函数,一个构造函数含有1个整型参数,用来设置年份,月份和日期均设为1;另一个构造函数提供3个参数,分别设置年份、月份和日期。定义一个不含参数的ToStringLong方法,采用格式(年月日)返回一个字符串,再定义一个不含参数的ToStringShort方法,采用格式()返回一个字符串。在Main()中使用这些方法。eg9.3 类ArrayPar的方法AVG拥有整型数组参数Nums,该方法返回该数组所有值的平均值。思考题:类StuScore包括字段StuName(姓名),Score(分数),类CourseScore包括字段CourseName(课程名);以及方法ListAllScore(列出所有分数),该方法的参数为StuScore类对象的数组,方法体向控制台输出数组每个元素的学生姓名和成绩;方法GetMaxScore(获得最高分),该方法的参数为StuScore类对象的数组,方法体为找出数组中成绩最高的对象,输出相关信息。在Main函数中使用。4.2.2 对象生命周期(类的构造函数、构造函数重载、类的析构函数)1类的构造函数作用:构造函数可理解为一种特殊的方法成员,它在每次创建对象时被自动调用,通常用于对象的初始化。注意:1) 构造函数名与类名相同带括号。2) 构造函数无返回值。3) 如果为类定义构造函数,CLR将自动生成一个默认的不带任何参数的空白构造函数,一旦自定义了构造函数,就不再拥有默认的空白构造函数。4) 除了可以由类的另一构造函数或子类的构造函数调用外,不能显式调用构造函书(声明对象除外)。语法:与类名相同,可带参数,一般为public (可以为其它访问修饰符,实现特殊用途)eg8.2: 给Person类添加构造函数实现初始化功能练习:声明书本类Book,拥有字段:图书编号、书名、作者、出版社,编写带参数的构造函数实现对象的初始化,在Class1的Main()中声明类的对象,并输出。2构造函数的重载一个类可同时拥有多个构造函数,其函数名均为类名但拥有不同的参数列表,执行时,自动根据参数类型和个数匹配构造函数。不同指:1. 参数个数不同 2. 参数数据类型不同 (和参数名无关)对于类Class Person来说,构造函数eg1:public Person(string p_name, int p_age, Gender p_gender)eg2:public Person(string vname, int vage, Gender vgender)eg1和eg2虽然参数名不同,但参数个数和类型相同,不允许定义在同一个类中。eg3:public Person(string p_name, int p_age, Gender p_gender)eg4:public Person(string p_name, int p_name, string p_name)eg3和eg4虽然参数名相同,但参数类型不同,可以定义在同一个类中。eg8.3: 给Person类添加3个构造函数 (名称相同,参数列表不同,运行时CLR根据参数类型和个数决定使用哪个构造函数)作业:给Book类添加2个构造函数,1个为无参构造函数,另一个构造函数提供参数列表:图书编号、书名、作者,进行初始化,出版社的值默认设为:机械工业出版社。在Main()中声明对象,赋值并输出。3析构函数对象使用完毕后,在释放对象

温馨提示

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

评论

0/150

提交评论