




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章高级面向对象编程,本章的重点,通过本章的学习,使读者理解基类和派生类的概念,理解继承如何提高软件的可重用性,掌握派生类的定义方法和应用,掌握接口概念和实现方法,用接口技术实现多个继承函数,理解委托和事件的概念、声明方法和应用,理解和掌握异常处理方法。6.1.1继承允许在现有类的基础上创建新类。新类可以从一个或多个现有类继承函数和数据,并且可以添加新的函数和数据。从6.1.2衍生而来,从现有类衍生而来的新类称为派生类,也称为子类。在C语言中,派生类可以从一个基类或多个基类派生。但是,C#不支持多基派生,只支持单基派生。从基类派生的继承称为单一继承;图6-1类之间的继承和派生关系,6.2类的
2、继承,6.2.1基类和派生类在C#中,派生类的语法格式如下:类子类名称:父类名的主体,例6-1创建一个普通的学生类学生,然后创建一个学生类学生的子类,实现成员变量和成员方法的继承。class Student /定义了一般的学生类,而父类公共静态字符串sClassName=软件类一;/静态字段公共字符串SName=王丽;/公共字段私有整数年龄=21;/私有字段,未继承。受保护的字符串性别=女性;/保护成员变量公共无效写入()/公共成员方法控制台。WriteLine(此。年龄);私有空写名称()/私有成员方法,它不是从控制台继承的。写线;学生,班级学生:学生/定义了大学生的班级和子类私有字符串部门
3、;/定义私有成员变量public c student(string _ department,string _ snake,string _ sex)department=_ department;SName=_ SName性=_性;/定义公共成员方法,成员变量SName、Sex、sClassName是从父类继承的。public void write studentinfo()console . write(0,1,2,3,sname,sexual,department,sclass name);/此成员方法来自父类Writage();班级程序静态无效主(字符串参数)学生cstu1=新学生(计
4、算机科学系,张三,男);cstu1writescudentinfo();学生类继承了学生类、6.2.2构造函数和析构函数。派生类构造函数的一般格式如下:():base();在派生类构造函数的参数表中,给出了初始化基类数据和添加一般成员数据所需的所有参数。派生类的构造函数按以下顺序执行:(1)按照继承时描述的顺序调用基类的构造函数。(2)调用派生类构造函数的内容。删除对象时,将执行派生类的析构函数。由于析构函数不能被继承,当派生类的析构函数被执行时,基类的析构函数也将被调用。执行顺序是:执行派生类的析构函数,执行基类的析构函数,这与执行构造函数的顺序相反,类学生公共静态字符串的s部门=软件工程部
5、门;私有字符串sClass/私有字段公共学生(字符串c)/构造函数SClass=c;学生()控制台。写线(“执行父析构函数”);公共void WriteClass()控制台。write line(this . sclass);班级学生3360学生/定义了大学生的班级,即私有整数的子类;/定义私有字段私有字符串名称,性别;/定义私有字段/定义构造函数公共属性(字符串c,字符串n,字符串s,int a) :基(c)名称=n;性别=s。年龄=a。控制台。写线(执行子类析构函数);分析程序的输出?公共void WriteCStudentInfo()控制台。书写(0,1,2,3,学生姓名,姓名,性别,年
6、龄);write class();/此成员方法来源于父类类程序static void main(string args)c student CST u1=new c student(o6软件4类,张三,男,23);cstu1writescudentinfo();分析程序的输出?6.2.3成员的继承、添加和隐藏。当派生类重新定义与从基类继承的字段(或方法)完全相同的字段(或方法)时,它被称为隐藏字段(或方法),这意味着新的字段(或方法)从基类中阻止字段(或方法)。但这并不意味着基类中的字段(或方法)不存在或不能使用,而是隐藏的字段(或方法)只能由同一基类中的方法访问。如果派生类必须访问隐藏字段(
7、或方法),则有必要添加“base”在字段(或方法)之前,指示它是与基类同名的字段(或方法)。为了清楚地显示派生类隐藏基类中同名成员的意图,派生类中同名成员应该使用新的修饰符。否则,编译时会出现提示警告。公共类Person私有字符串名称;私人互联网时代;私人长标识;公共人员(字符串n,int a,long i)名称=n;年龄=a;ID=i。公共无效显示()控制台。写线(名称: 0,名称);控制台。写线(年龄:0,年龄);控制台。写线(识别码: 0,识别码);公共类员工:人私人字符串部门;私人双倍工资;公共雇员(字符串n,整数a,长I,字符串d,双s):基数(n,a,I)部门=d;工资=s。分析程
8、序的输出?新的公共空间显示()基础。显示();控制台。WriteLine(department: 0,department);控制台。写线(薪水:0,薪水);班级程序静态无效主(字符串参数)员工cstu1=新员工(张三,20,60012L,计算机科学系,2601.89);cstu1显示();分析程序的输出?关键字base和This相似,但是base指的是基类的对象,而这是当前类的对象。(1)使用base关键字访问基类的字段和方法:new public void display()base . display();/调用基类被隐藏的方法console . write line(departmen
9、t : 0,department);控制台。写线(薪水:0,薪水);6.2.4关键字base和此,(2)使用base关键字调用基类的构造函数。派生类继承除构造函数和析构函数之外的基类的所有成员,但是派生类仍然可以调用直接基类的构造函数。参见示例6-2和6-3。(3)此关键字用于访问每个元素this。成员变量或此。当前类中的成员方法(参数)。(4)此关键字将对象作为参数传递给其他方法的方法名(this)。示例6-4此关键字的使用,类雇员私有字符串名称;私人双倍工资=5000;公共雇员(字符串名称)此。名称=名称;/用它来限定名称字段public void print employee(). co
10、nsole . write line(name : 0,name);/调用calctax()控制台。writeline(税: 03360c,税。calctax (this)以此关键字作为参数;公共双倍工资;类别税公共静态双计算器(雇员E)返回0.07 *我的工资;班级主班级静态无效主()员工a1=新员工(张三);A1 .打印员工();/显示结果程序:的运行结果,并分析程序的输出结果?6.2.5访问控制、1对类的访问控制在C#语言中,公共和内部访问控制修饰符可用于限制类的可见性。public:称为public类,可由该项目和其他项目的代码访问。内部:只能由当前项目的代码访问。6.2.5访问控制,
11、2对类成员的访问控制类中方法和成员变量的可见性可以通过使用公共、私有、受保护、内部和受保护的内部访问控制修饰符来限制。(1) public:可以无限制地访问公共成员,并且可以从外部、内部和派生类访问公共成员;(Private:的私有成员只能由其类中的成员访问,而不能由外部和子类访问。(3) protected:只能由其类和子类的方法访问。(4) internal:只能由同一项目中的方法访问。(5) protected internal:可由该类的子类和同一项目中任何类的方法访问。示例6-6类成员可见性示例,类父私有int I;/受保护的int j只能由父类的内部方法访问;/可以通过子类化的方法
12、来访问私有的void display()控制台。写线(我是父类);受保护的void Setvalue()/可由j=1的子类访问;I=2;公共无效MyDvalue()控制台。WriteLine(i=0,j=1,I,j);示例6-6类成员的可见性示例(续),class child : parent public int k;公共空间显示(控制台)。写线(我是一个子类);内部无效变更()/I=1;/无法访问父类的私有成员Setvalue();/可以访问父类的受保护方法MydVaLue();/可以访问父类的公共方法,示例6-6类成员的可见性示例(续),类程序静态void main(字符串参数)父x=new parent();子项y=新子项();x . MydVaLue();/x . I=1;/不可访问/x . j=2;/无法访问/x . Setvalue();由保护装饰,无法访问/x . Display();无法访问变更(),因为它是由私有装饰的;/内部可以访问y . Display();/公共修饰符可以访问y . MydVaLue();/继承y.k=20控制台。Writ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年静脉治疗护理小组理论试题及答案
- 交通噪声监测印刷考核试卷
- 发电机组润滑油更换与维护规范考核试卷
- 过电压保护装置检测考核试卷
- 光纤网络规划与优化考核试卷
- 体育产业电商用户行为追踪与分析工具考核试卷
- 互联网批发行业数据分析平台搭建考核试卷
- 救援基金管理办法
- 新疆养蜂管理办法
- 异地办矿管理办法
- 2025电子产品租赁合同模板
- 基于Hive数据仓库的瓜子网二手车数据分析系统设计与实现
- 阑尾炎术前术后健康宣教
- 软件硬件资产管理办法
- 江苏水利签证管理办法
- 采购面料知识培训课件
- 商务茶艺教学课件
- 预报员竞赛-雷暴与强对流临近预报-黄金考点6
- 2024冠心病治疗指南讲课件
- 小学生医疗知识普及课件
- 留置看护队员试题及答案
评论
0/150
提交评论