C# 课件类对象访问控制字段方法静态成员.docx
《C# 课件类对象访问控制字段方法静态成员.docx》由会员分享,可在线阅读,更多相关《C# 课件类对象访问控制字段方法静态成员.docx(11页珍藏版)》请在冰豆网上搜索。
C#课件类对象访问控制字段方法静态成员
枚举示例
enum<枚举名>
{枚举值1,枚举值2,枚举值3,...}
enummycolor
{lightblue,pink,yellowgreen}
枚举应用示例
作用:
枚举值作为方法的参数,来表达一种选择
第11章VisualC#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.类的成员:
类可以由哪些元素组成。
P88
5.类的成员的访问修饰符P89
6.类的成员-字段
字段是类中声明的变量,用来在对象中存储信息。
Eg:
Person类包括姓名,年龄和性别(枚举)
课堂练习:
建一个书的Book类,包括以下字段:
书名、作者、出版社、价格、页数,均为Public成员,在Class1的Main函数中声明该类的一个对象并赋值。
7.类的静态字段static
1.类的静态成员不属于类的某个对象,而属于类本身所有,和对象无关。
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.语法
注1方法若无返回值,返回类型应为void。
注2方法若有返回值,应在方法体中使用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.参数数据类型不同(和参数名无关)
对于类ClassPerson来说,构造函数
eg1:
publicPerson(stringp_name,intp_age,Genderp_gender)
eg2:
publicPerson(stringvname,intvage,Gendervgender)
eg1和eg2虽然参数名不同,但参数个数和类型相同,不允许定义在同一个类中。
eg3:
publicPerson(stringp_name,intp_age,Genderp_gender)
eg4:
publicPerson(stringp_name,intp_name,stringp_name)
eg3和eg4虽然参数名相同,但参数类型不同,可以定义在同一个类中。
eg8.3:
给Person类添加3个构造函数(名称相同,参数列表不同,运行时CLR根据参数类型和个数决定使用哪个构造函数)
作业:
给Book类添加2个构造函数,1个为无参构造函数,另一个构造函数提供参数列表:
图书编号、书名、作者,进行初始化,出版社的值默认设为:
机械工业出版社。
在Main()中声明对象,赋值并输出。
3.析构函数
对象使用完毕后,在释放对象时,就会调用类的析构函数,主要用于资源释放。
析构函数名:
~类名()
(C#里面很少用到析构函数,因为C#有个垃圾收集器,自动释放资源)
注意:
1.析构函数无参数,也无返回值,不能使用访问限制修饰符。
2.析构函数不能被继承,也不能被显式地调用。
△看代码写结果P123
新增课程计算机语言C#
新增课程数据结构
当前课程数为1
_
当前课程数为0