




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目八 实现OOP中的多态与抽象类人工智能时代下跨语言编程项目实战中等职业教育“十三五”规划课程改革创新教材中高职贯通计算机网络技术专业系列教材中国铁道出版社 编著:刘编著:刘 丹丹 任务一任务一 实现实现C+C+语言中的多态与抽象类语言中的多态与抽象类任务二任务二 实现实现VB.NETVB.NET语言中的多态与抽象类语言中的多态与抽象类任务三任务三 实现实现JAVAJAVA语言中的多态与抽象类语言中的多态与抽象类内容导航一、任务描述二、任务分析三、任务实施四、任务小结五、相关知识与技能六、任务拓展任务四任务四 实现实现C#C#语言中的多态与抽象类语言中的多态与抽象类任务五任务五 实现实现Py
2、thonPython语言中的多态与抽象类语言中的多态与抽象类项目八综合项目八综合比较表比较表项目项目综合实训综合实训 实现实现家庭管理系统中家庭管理系统中的的 多态多态与抽象类与抽象类3 一、任务描述上海御恒信息科技公司接到客户的一份订单,要求用C+语言中的多态与抽象类存储学生的成绩登记表。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉C+语言中的多态与抽象类,并将学生成绩登记表用C+语言中的多态与抽象类的源代码编写出来,小张按照经理的要求开始做以下的任务分析。4 二、任务分析1、用Person类来实现表格的架构(其中Person为抽象基类):在Person类中封装保护数据成员,类内
3、定义公共的构造函数输入每一行信息,类内说明虚函数输出表头,类内说明纯虚函数返回ID,NAME,AGE, 类内说明虚函数输出每一行信息,类内说明纯虚函数输出不同派生类的特性。2、用Student类来实现表格的架构(其中Student为派生类并从抽象基类Person继承):在类中封装私有数据成员,类内定义公共的默认构造函数(先调用基类的构造函数),类内定义输出函数输出表头,类内定义输出函数分别返回个域, 类内定义输出函数输出每一行信息,类内重写基类Person的纯虚函数。3、用Teacher类来实现表格的架构(其中Teacher为派生类并从抽象基类Person继承):在类中封装私有数据成员,类内定
4、义公共的默认构造函数(先调用基类的构造函数),类内定义输出函数输出表头,类内定义输出函数分别返回各个域, 类内定义输出函数输出每一行信息,类内重写基类Person的纯虚函数。4、在类外封装整个程序的入口方法main():为抽象基类新建指针,为派生类新建对象,用基类指针指向派生类对象,用基类指针指向要重写的抽象方法。5、学生信息登记表如项目一中任务一里的表1-1所示。5 三、任务实施第一步:打开Visual Studio。第二步:文件-新建-C+项目。第三步:在源文件Person.h中输入以下内容:/Person.h/1、包含系统输入输出头文件及标准输入输出命名空间#includeiostrea
5、musingnamespacestd;6 /2、用Person类来实现表格的架构(其中Person为抽象基类)classPerson/2.1在类中封装保护数据成员protected:charid10;charname20;intage;12/8/20217 /2.2、类内定义公共的构造函数输入每一行信息:public:Person()coutid;coutname;coutage;12/8/20218 /2.3、类内说明虚函数输出表头virtualvoidputHead()cout-endl;coutidtnametageendl;cout-endl;/2.4、类内说明纯虚函数返回IDvirt
6、ualchar*putId()=0;/2.5、类内说明纯虚函数返回NAMEvirtualchar*putName()=0;/2.6、类内说明纯虚函数返回AGEvirtualintputAge()=0;12/8/20219 /2.7、类内说明虚函数输出每一行信息virtualvoidputData()coutidtnametageendl;cout-endl;/2.8、类内说明纯虚函数输出不同派生类的特性virtualvoiddispInfo()=0;12/8/202110 第四步:在源文件Student.h中输入以下内容:/Student.h/1、包含系统输入输出头文件及标准输入输出命名空间#
7、includeiostreamusingnamespacestd;12/8/202111 /2、用Student类来实现表格的架构(其中Student为派生类并从抽象基类Person继承)classStudent:publicPerson/2.1在类中封装私有数据成员private:doublescore;/2.2、类内定义公共的默认构造函数(先调用基类的构造函数)public:Student():Person()coutscore;12/8/202112 /2.2、类内定义输出函数输出表头voidputHead()cout-endl;coutidtnametagetscoreendl;cou
8、t-endl;12/8/202113 /2.4、类内定义输出函数分别返回个域char*putId()returnid;char*putName()returnname;intputAge()returnage;doubleputScore()returnscore;12/8/202114 /2.5、类内定义输出函数输出每一行信息voidputData()coutputId()tputName()tputAge()tputScore()endl;cout-endl;/2.6、类内重写基类Student的纯虚函数voiddispInfo()cout学生每月要参加各科单元测试endl;cout-en
9、dl;12/8/202115 第五步:在源文件Teacher.h中输入以下内容:/Teacher.h/1、包含系统输入输出头文件及标准输入输出命名空间#includeiostreamusingnamespacestd;12/8/202116 /2、用Teacher类来实现表格的架构(其中Teacher为派生类并从抽象基类Person继承)classTeacher:publicPerson/2.1在类中封装私有数据成员private:doublesalary;/2.2、类内定义公共的默认构造函数(先调用基类的构造函数)public:Teacher():Person()coutsalary;12/
10、8/202117 /2.3、类内定义输出函数输出表头voidputHead()cout-endl;coutidtnametagetsalaryendl;cout-endl;12/8/202118 /2.4、类内定义输出函数分别返回个域char*putId()returnid;char*putName()returnname;intputAge()returnage;doubleputSalary()returnsalary;12/8/202119 /2.5、类内定义输出函数输出每一行信息voidputData()coutputId()tputName()tputAge()tputSalary(
11、)endl;cout-endl;/2.6、类内重写基类Person的纯虚函数voiddispInfo()cout教师每月要按时发放工资endl;cout-putHead();p-putData();p-dispInfo();12/8/202122 /2.5为派生类新建对象Teacherte;/2.6用基类指针指向派生类对象p=&te;/2.7用基类指针指向要重写的抽象方法p-putHead();p-putData();p-dispInfo();cout新建-VB.NET项目。第三步:在源文件Person.vb中输入以下内容:Person.vb1、使用系统命名空间,其中包括常用的类Imp
12、ortsSystemImportsSystem.IO34 三、任务实施2、用Person类来实现表格的架构(其中Person为基类)PublicClassPerson2.1在类中封装保护域ProtectedidAsStringProtectednameAsStringProtectedageAsInteger2.2、类内定义公共的构造过程输入每一行信息:PublicSubNew()Console.WriteLine()Console.Write(请输入编号:)id=Console.ReadLine()Console.Write(请输入姓名:)name=Console.ReadLine()Con
13、sole.Write(请输入年龄:)age=CInt(Console.ReadLine()EndSub35 三、任务实施2.3、类内说明输出过程输出表头PublicOverridableSubPutHead()Console.WriteLine(-)Console.WriteLine(Space(4)+id+Space(4)+name+Space(4)+age)Console.WriteLine(-)EndSub2.4、类内说明抽象输出方法返回IDPublicOverridableFunctionPutId()AsStringEndFunction2.5、类内说明抽象输出方法返回NAMEPub
14、licOverridableFunctionPutName()AsStringEndFunction36 三、任务实施第四步:在源文件Student.vb中输入以下内容:Student.vb1、使用系统命名空间,其中包括常用的类ImportsSystemImportsSystem.IO37 三、任务实施2、用Student类来实现表格的架构(其中Student为派生类并从抽象基类Person继承)PublicClassStudentInheritsPerson2.1在类中封装私有域PrivatescoreAsDouble2.2、类内定义公共的默认构造过程(先调用基类的构造过程)PublicSu
15、bNew()MyBase.New()Console.Write(请输入总分:)score=CDbl(Console.ReadLine()EndSub38 三、任务实施2.3、类内定义输出过程输出表头PublicOverridesSubPutHead()Console.WriteLine(-)Console.WriteLine(Space(4)+id+Space(4)+name+Space(4)+age+Space(4)+score)Console.WriteLine(-)EndSub2.4、类内定义输出方法分别返回4个域PublicOverridesFunctionPutId()AsStrin
16、gReturnidEndFunction39 三、任务实施PublicOverridesFunctionPutName()AsStringReturnnameEndFunctionPublicOverridesFunctionPutAge()AsIntegerReturnageEndFunctionPublicFunctionPutScore()AsDoubleReturnscoreEndFunction40 三、任务实施2.5、类内定义输出过程输出每一行信息PublicOverridesSubPutData()Console.WriteLine(Space(4)+PutId()+Space(
17、4)+PutName()+Space(4)+CStr(PutAge()+Space(4)+Cstr(PutScore()Console.WriteLine(-)EndSub2.6、类内重写Person的过程PublicOverridesSubDispInfo()Console.WriteLine(学生每月要参加各科单元测试)Console.WriteLine(-)EndSubEndClass41 三、任务实施第五步:在源文件Teacher.vb中输入以下内容:Teacher.vb1、使用系统命名空间,其中包括常用的类ImportsSystemImportsSystem.IO42 三、任务实施2
18、、用Teacher类来实现表格的架构(其中Teacher为派生类并从抽象基类Person继承)PublicClassTeacherInheritsPerson2.1在类中封装私有域PrivatesalaryAsDouble2.2、类内定义公共的默认构造过程(先调用基类的构造过程)PublicSubNew()MyBase.New()Console.Write(请输入工资:)salary=CDbl(Console.ReadLine()EndSub43 三、任务实施2.3、类内定义输出过程输出表头PublicOverridesSubPutHead()Console.WriteLine(-)Conso
19、le.WriteLine(Space(4)+id+Space(4)+name+Space(4)+age+Space(4)+salary)Console.WriteLine(-)EndSub44 三、任务实施2.4、类内定义输出方法分别返回4个域PublicOverridesFunctionPutId()AsStringReturnidEndFunctionPublicOverridesFunctionPutName()AsStringReturnnameEndFunctionPublicOverridesFunctionPutAge()AsIntegerReturnageEndFunction
20、PublicFunctionPutSalary()AsDoubleReturnsalaryEndFunction45 三、任务实施2.5、类内定义输出过程输出每一行信息PublicOverridesSubPutData()Console.WriteLine(Space(4)+PutId()+Space(4)+PutName()+Space(4)+CStr(PutAge()+Space(4)+Cstr(PutSalary()Console.WriteLine(-)EndSub2.6、类内重写Person的过程PublicOverridesSubDispInfo()Console.WriteLin
21、e(教师每月要按时发放工资)Console.WriteLine(-)EndSubEndClass46 三、任务实施第六步:在源文件Module1.vb中输入以下内容:Module1.vb1、使用系统命名空间,其中包括常用的类ImportsSystemImportsSystem.IO47 三、任务实施2、用Module1模块来封装整个程序的入口过程Main()ModuleModule1SubMain()2.1为抽象基类新建引用DimpAsPerson2.2为派生类新建对象DimstAsNewStudent()2.3用基类引用指向派生类对象p=st48 三、任务实施2.4用基类引用指向要重写的抽象
22、方法p.PutHead()p.PutData()p.DispInfo()2.5为派生类新建对象DimteAsNewTeacher()2.6用基类引用指向派生类对象p=te49 三、任务实施2.7用基类引用指向要重写的抽象方法p.PutHead()p.PutData()p.DispInfo()Console.ReadLine()EndSubEndModule50 三、任务实施第七步:执行VB.NET项目,运行结果如任务一中的图8-1所示:51 四、任务小结1、用Person类来实现表格的架构(其中Person为抽象基类):在Person类中封装保护域,类内定义公共的构造过程输入每一行信息,类内说
23、明输出过程输出表头,类内说明抽象输出方法返回ID ,NAME,AGE, 类内说明抽象输出方法输出每一行信息,类内说明抽象输出方法输出每个派生类各自的信息。2、用Student类来实现表格的架构(其中Student为派生类并从抽象基类Person继承):在类中封装私有域,类内定义公共的默认构造过程(先调用基类的构造过程),类内定义输出过程输出表头,类内定义输出方法分别返回4个域, 类内定义输出过程输出每一行信息,类内重写Person的过程。52 四、任务小结3、用Teacher类来实现表格的架构(其中Teacher为派生类并从抽象基类Person继承):在类中封装私有域,类内定义公共的默认构造过
24、程(先调用基类的构造过程),类内定义输出过程输出表头,类内定义输出方法分别返回4个域, 类内定义输出过程输出每一行信息,类内重写Person的过程。4、用Module1模块来封装整个程序的入口过程Main():为抽象基类新建引用,为派生类新建对象,用基类引用指向派生类对象,用基类引用指向要重写的抽象方法。53 五、相关知识与技能1、多态的底层原理。2、达到多态的两个条件:一个是虚函数覆盖,一个是对象的指针或引用调用虚函数。3、VB 的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组件的属性和方法。4、抽象类。5、多态的好处。54 六、任务拓展1、VB.NET中多态的特性是什么?2
25、、VB.NET中多态中基类与派生类应该如何封装函数?3、VB.NET中如何在主函数中分别实现基类与派生类的相应功能?任务一任务一 实现实现C+C+语言中的多态与抽象类语言中的多态与抽象类任务二任务二 实现实现VB.NETVB.NET语言中的多态与抽象类语言中的多态与抽象类任务三任务三 实现实现JAVAJAVA语言中的多态与抽象类语言中的多态与抽象类内容导航一、任务描述二、任务分析三、任务实施四、任务小结五、相关知识与技能六、任务拓展任务四任务四 实现实现C#C#语言中的多态与抽象类语言中的多态与抽象类任务五任务五 实现实现PythonPython语言中的多态与抽象类语言中的多态与抽象类项目八综
26、合项目八综合比较表比较表项目项目综合实训综合实训 实现实现家庭管理系统中家庭管理系统中的的 多态多态与抽象类与抽象类56 一、任务描述上海御恒信息科技公司接到客户的一份订单,要求用JAVA语言中的多态与抽象类存储学生的成绩登记表。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉JAVA语言中的多态与抽象类,并将学生成绩登记表用JAVA语言中的多态与抽象类的源代码编写出来,小张按照经理的要求开始做以下的任务分析。57 二、任务分析1、用Person类来实现表格的架构(其中Person为抽象超类):在Person类中封装保护域,类内定义公共的构造方法输入每一行信息,类内定义实例方法输出表头
27、,类内说明抽象输出方法返回ID,NAME,AGE, 类内定义实例方法输出每一行信息,类内说明抽象方法输出每个子类各自的信息。2、用Student类来实现表格的架构(其中Student为子类并从抽象超类Person继承):在类中封装私有域,类内定义公共的默认构造方法(先调用基类的构造方法),类内定义输出方法输出表头,类内定义输出方法分别返回4个域, 类内定义输出函数输出每一行信息,类内重写基类Person的抽象方法。3、用Teacher类来实现表格的架构(其中Teacher为子类并从抽象超类Person继承):在类中封装私有域,类内定义公共的默认构造方法(先调用基类的构造方法),类内定义输出方法
28、输出表头,类内定义输出方法分别返回4个域, 类内定义输出方法输出每一行信息,类内重写基类Person的抽象方法。4、用Program类来封装整个程序的入口方法main():为抽象基类新建引用,为派生类新建对象,用基类引用指向派生类对象,用基类引用指向要重写的抽象方法。5、学生信息登记表如项目一中任务一里的表1-1所示58 三、任务实施第一步:打开Eclipse。第二步:文件-新建-JAVA项目。第三步:在源文件Person.java中输入以下内容:/Person.java/1、用工程名chap08_oop中用抽象类和抽象方法实现多态_03_Jsharp新建自定义包packagechap08_o
29、op中用抽象类和抽象方法实现多态_03_Jsharp;59 三、任务实施/2、使用系统包,其中包括常用的类importjava.lang.*;importjava.io.*;/3、用Person类来实现表格的架构(其中Person为超类)publicabstractclassPerson/3.1在类中封装保护域protectedStringid;protectedStringname;protectedintage;protectedBufferedReaderbr=newBufferedReader(newInputStreamReader(System.in);60 三、任务实施/3.2、
30、类内定义公共的构造方法输入每一行信息:publicPerson()throwsIOExceptionSystem.out.println();System.out.print(请输入编号:);id=br.readLine();System.out.print(请输入姓名:);name=br.readLine();System.out.print(请输入年龄:);age=Integer.parseInt(br.readLine();61 三、任务实施/3.3、类内定义实例方法输出表头publicvoidputHead()System.out.println(-);System.out.print
31、ln(id+t+name+t+age);System.out.println(-);/3.4、类内说明抽象输出方法返回IDpublicabstractStringputId();/3.5、类内说明抽象输出方法返回NAMEpublicabstractStringputName();/3.6、类内说明抽象输出方法返回AGEpublicabstractintputAge();62 三、任务实施/3.7、类内定义实例方法输出每一行信息publicvoidputData()System.out.println(+id+t+name+t+age);System.out.println(-);/2.8、类内
32、说明抽象方法输出每个子类各自的信息publicabstractvoiddispInfo();63 第四步:在源文件Student.java中输入以下内容:/Student.java/1、用工程名chap08_oop中用抽象类和抽象方法实现多态_03_JSharp新建自定义包packagechap08_oop中用抽象类和抽象方法实现多态_03_Jsharp;12/8/202164 /2、使用系统包,其中包括常用的类importjava.lang.*;importjava.io.*;/3、用Student类来实现表格的架构(其中Student为子类并从抽象超类Person继承)publicclas
33、sStudentextendsPerson/3.1在类中封装私有域privatedoublescore;12/8/202165 /3.2、类内定义公共的默认构造方法(先调用基类的构造方法)publicStudent()throwsIOExceptionsuper();System.out.print(请输入score:);score=Double.parseDouble(br.readLine();/3.3、类内定义输出方法输出表头publicvoidputHead()System.out.println(-);System.out.println(id+t+name+t+age+t+scor
34、e);System.out.println(-);12/8/202166 /3.4、类内定义输出方法分别返回4个域publicStringputId()returnid;publicStringputName()returnname;publicintputAge()returnage;publicdoubleputScore()returnscore;12/8/202167 /3.5、类内定义输出方法输出每一行信息publicvoidputData()System.out.println(+putId()+t+putName()+t+putAge()+t+putScore();System.
35、out.println(-);/3.6、类内重写基类Person的抽象方法publicvoiddispInfo()System.out.println(学生每月要参加各科单元测试);System.out.println(-);12/8/202168 第五步:在源文件Teacher.java中输入以下内容:/Teacher.java/1、用工程名chap08_oop中用抽象类和抽象方法实现多态_03_JSharp新建自定义包packagechap08_oop中用抽象类和抽象方法实现多态_03_Jsharp;12/8/202169 /2、使用系统包,其中包括常用的类importjava.lang.
36、*;importjava.io.*;/3、用Teacher类来实现表格的架构(其中Teacher为子类并从抽象超类Person继承)publicclassTeacherextendsPerson/3.1在类中封装私有域privatedoublesalary;/3.2、类内定义公共的默认构造方法(先调用基类的构造方法)publicTeacher()throwsIOExceptionsuper();System.out.print(请输入salary:);salary=Double.parseDouble(br.readLine();12/8/202170 /3.3、类内定义输出方法输出表头pub
37、licvoidputHead()System.out.println(-);System.out.println(id+t+name+t+age+t+salary);System.out.println(-);12/8/202171 /3.4、类内定义输出方法分别返回4个域publicStringputId()returnid;publicStringputName()returnname;publicintputAge()returnage;publicdoubleputSalary()returnsalary;12/8/202172 /3.5、类内定义输出方法输出每一行信息publicvo
38、idputData()System.out.println(+putId()+t+putName()+t+putAge()+t+putSalary();System.out.println(-);/3.6、类内重写基类Person的抽象方法publicvoiddispInfo()System.out.println(教师每月要按时发放工资);System.out.println(-);12/8/202173 第六步:在源文件Program.java中输入以下内容:/Program.java/1、用工程名chap08_oop中用抽象类和抽象方法实现多态_03_Jsharp新建自定义包packag
39、echap08_oop中用抽象类和抽象方法实现多态_03_Jsharp;12/8/202174 /2、使用系统包,其中包括常用的类importjava.lang.*;importjava.io.*;/3、用Program类来封装整个程序的入口方法main()publicclassProgrampublicstaticvoidmain(Stringargs)throwsIOException/3.1为抽象基类新建引用Personp;/3.2为派生类新建对象Studentst=newStudent();12/8/202175 /3.3用基类引用指向派生类对象p=st;/3.4用基类引用指向要重写的
40、抽象方法p.putHead();p.putData();p.dispInfo();/3.5为派生类新建对象Teacherte=newTeacher();/3.6用基类引用指向派生类对象p=te;/3.7用基类引用指向要重写的抽象方法p.putHead();p.putData();p.dispInfo();System.out.println();12/8/202176 第七步:执行JAVA项目,运行结果如任务一中的图8-1所示:12/8/202177 四、任务小结1、用Person类来实现表格的架构(其中Person为抽象超类):在Person类中封装保护域,类内定义公共的构造方法输入每一行信
41、息,类内定义实例方法输出表头,类内说明抽象输出方法返回ID,NAME,AGE, 类内定义实例方法输出每一行信息,类内说明抽象方法输出每个子类各自的信息。78 四、任务小结2、用Student类来实现表格的架构(其中Student为子类并从抽象超类Person继承):在类中封装私有域,类内定义公共的默认构造方法(先调用基类的构造方法),类内定义输出方法输出表头,类内定义输出方法分别返回4个域, 类内定义输出函数输出每一行信息,类内重写基类Person的抽象方法。79 四、任务小结3、用Teacher类来实现表格的架构(其中Teacher为子类并从抽象超类Person继承):在类中封装私有域,类内
42、定义公共的默认构造方法(先调用基类的构造方法),类内定义输出方法输出表头,类内定义输出方法分别返回4个域, 类内定义输出方法输出每一行信息,类内重写基类Person的抽象方法。80 四、任务小结4、用Program类来封装整个程序的入口方法main():为抽象基类新建引用,为派生类新建对象,用基类引用指向派生类对象,用基类引用指向要重写的抽象方法。81 五、相关知识与技能1、多态的转型。2、JAVA中多态的好处。82 六、任务拓展1、JAVA中多态的特性是什么?2、JAVA中多态中基类与派生类应该如何封装函数?3、JAVA中如何在主函数中分别实现基类与派生类的相应功能?任务一任务一 实现实现C
43、+C+语言中的多态与抽象类语言中的多态与抽象类任务二任务二 实现实现VB.NETVB.NET语言中的多态与抽象类语言中的多态与抽象类任务三任务三 实现实现JAVAJAVA语言中的多态与抽象类语言中的多态与抽象类内容导航一、任务描述二、任务分析三、任务实施四、任务小结五、相关知识与技能六、任务拓展任务四任务四 实现实现C#C#语言中的多态与抽象类语言中的多态与抽象类任务五任务五 实现实现PythonPython语言中的多态与抽象类语言中的多态与抽象类项目八综合项目八综合比较表比较表项目项目综合实训综合实训 实现实现家庭管理系统中家庭管理系统中的的 多态多态与抽象类与抽象类84 一、任务描述上海御
44、恒信息科技公司接到客户的一份订单,要求用C#语言中的多态与抽象类存储学生的成绩登记表。公司刚招聘了一名程序员小张,软件开发部经理要求他尽快熟悉C#语言中的多态与抽象类,并将学生成绩登记表用C#语言中的多态与抽象类的源代码编写出来,小张按照经理的要求开始做以下的任务分析。85 二、任务分析1、用Person类来实现表格的架构(其中Person为抽象基类):在Person类中封装保护域,类内定义公共的构造函数输入每一行信息,类内定义输出函数输出表头,类内说明抽象输出函数返回ID,NAME,AGE, 类内定义虚方法输出每一行信息,类内说明抽象方法输出每个子类各自的信息。2、用Student类来实现表
45、格的架构(其中Student为派生类并从抽象基类Person继承):在类中封装私有域,类内定义公共的默认构造函数(先调用基类的构造函数),类内定义输出函数输出表头,类内定义输出函数分别返回4个域, 类内定义输出函数输出每一行信息,类内重写基类Person的抽象方法。3、用Teacher类来实现表格的架构(其中Teacher为派生类并从抽象基类Person继承):在类中封装私有域,类内定义公共的默认构造函数(先调用基类的构造函数),类内定义输出函数输出表头,类内定义输出函数分别返回4个域, 类内定义输出函数输出每一行信息,类内重写基类Teacher的抽象方法。4、用Program类来封装整个程序
46、的入口方法main():为抽象基类新建引用,为派生类新建对象,用基类引用指向派生类对象,用基类引用指向要重写的抽象方法。5、学生信息登记表如项目一中任务一里的表1-1所示。86 三、任务实施第一步:打开Visual Studio。第二步:文件-新建-C#项目。第三步:在源文件Person.cs中输入以下内容:/Person.cs/1、使用系统命名空间,其中包括常用的类usingSystem;usingSystem.Collections.Generic;usingSystem.Text;87 /2、用工程名chap08_oop中用抽象类和抽象方法实现多态_04_Csharp新建自定义命名空间n
47、amespacechap08_oop中用抽象类和抽象方法实现多态_04_Csharp/3、用Person类来实现表格的架构(其中Person为基类)publicabstractclassPerson/3.1在类中封装保护域protectedstringid;protectedstringname;protectedintage;88 /3.2、类内定义公共的构造方法输入每一行信息:publicPerson()Console.WriteLine();Console.Write(请输入编号:);id=Console.ReadLine();Console.Write(请输入姓名:);name=Con
48、sole.ReadLine();Console.Write(请输入年龄:);age=Int32.Parse(Console.ReadLine();89 /3.3、类内定义输出方法输出表头publicvirtualvoidPutHead()Console.WriteLine(-);Console.WriteLine(id+t+name+t+age);Console.WriteLine(-);/3.4、类内说明抽象输出方法返回IDpublicabstractstringPutId();/3.5、类内说明抽象输出方法返回NAMEpublicabstractstringPutName();/3.6、类
49、内说明抽象输出方法返回AGEpublicabstractintPutAge();90 /3.7、类内定义虚方法输出每一行信息publicvirtualvoidPutData()Console.WriteLine(+id+t+name+t+age);Console.WriteLine(-);/2.8、类内说明抽象方法输出每个子类各自的信息publicabstractvoidDispInfo();91 第四步:在源文件Student.cs中输入以下内容:/Student.cs/1、使用系统命名空间,其中包括常用的类usingSystem;usingSystem.Collections.Generi
50、c;usingSystem.Text;92 /2、用工程名chap08_oop中用抽象类和抽象方法实现多态_04_Csharp新建自定义命名空间namespacechap08_oop中用抽象类和抽象方法实现多态_04_Csharp/3、用Student类来实现表格的架构(其中Student为派生类并从抽象基类Person继承)publicclassStudent:Person/3.1在类中封装私有域privatedoublescore;93 /3.2、类内定义公共的默认构造函数(先调用基类的构造函数)publicStudent():base()Console.Write(请输入score:);
51、score=Double.Parse(Console.ReadLine();/3.3、类内定义输出函数输出表头publicoverridevoidPutHead()Console.WriteLine(-);Console.WriteLine(id+t+name+t+age+t+score);Console.WriteLine(-);94 /3.4、类内定义输出函数分别返回4个域publicoverridestringPutId()returnid;publicoverridestringPutName()returnname;publicoverrideintPutAge()returnage
52、;publicdoublePutScore()returnscore;95 /3.5、类内定义输出函数输出每一行信息publicoverridevoidPutData()Console.WriteLine(+PutId()+t+PutName()+t+PutAge()+t+PutScore();Console.WriteLine(-);/3.6、类内重写基类Student的抽象方法publicoverridevoidDispInfo()Console.WriteLine(学生每月要参加各科单元测试);Console.WriteLine(-);96 第五步:在源文件Teacher.cs中输入以下
53、内容:/Teacher.cs/1、使用系统命名空间,其中包括常用的类usingSystem;usingSystem.Collections.Generic;usingSystem.Text;97 /2、用工程名chap08_oop中用抽象类和抽象方法实现多态_04_Csharp新建自定义命名空间namespacechap08_oop中用抽象类和抽象方法实现多态_04_Csharp/3、用Teacher类来实现表格的架构(其中Teacher为派生类并从抽象基类Person继承)publicclassTeacher:Person/3.1在类中封装私有域privatedoublesalary;98
54、/3.2、类内定义公共的默认构造函数(先调用基类的构造函数)publicTeacher():base()Console.Write(请输入salary:);salary=Double.Parse(Console.ReadLine();/3.3、类内定义输出函数输出表头publicoverridevoidPutHead()Console.WriteLine(-);Console.WriteLine(id+t+name+t+age+t+salary);Console.WriteLine(-);99 /3.4、类内定义输出函数分别返回4个域publicoverridestringPutId()ret
55、urnid;publicoverridestringPutName()returnname;publicoverrideintPutAge()returnage;publicdoublePutSalary()returnsalary;100 /3.5、类内定义输出函数输出每一行信息publicoverridevoidPutData()Console.WriteLine(+PutId()+t+PutName()+t+PutAge()+t+PutSalary();Console.WriteLine(-);/3.6、类内重写基类Teacher的抽象方法publicoverridevoidDispIn
56、fo()Console.WriteLine(教师每月要按时发放工资);Console.WriteLine(-);101 第六步:在源文件Program.cs中输入以下内容:/Program.cs/1、使用系统命名空间,其中包括常用的类usingSystem;usingSystem.Collections.Generic;usingSystem.Text;102 /2、用工程名chap08_oop中用抽象类和抽象方法实现多态_04_Csharpp新建自定义命名空间namespacechap08_oop中用抽象类和抽象方法实现多态_04_Csharp/3、用Program类来封装整个程序的入口方法
57、main()publicclassProgrampublicstaticvoidMain(stringargs)/3.1为抽象基类新建引用Personp;103 /3.2为派生类新建对象Studentst=newStudent();/3.3用基类引用指向派生类对象p=st;/3.4用基类引用指向要重写的抽象方法p.PutHead();p.PutData();p.DispInfo();/3.5为派生类新建对象Teacherte=newTeacher();104 /3.6用基类引用指向派生类对象p=te;/3.7用基类引用指向要重写的抽象方法p.PutHead();p.PutData();p.Di
58、spInfo();Console.WriteLine();105 第七步:执行C#项目,运行结果如任务一中的图8-1所示:106 四、任务小结1、用Person类来实现表格的架构(其中Person为抽象基类):在Person类中封装保护域,类内定义公共的构造函数输入每一行信息,类内定义输出函数输出表头,类内说明抽象输出函数返回ID,NAME,AGE, 类内定义虚方法输出每一行信息,类内说明抽象方法输出每个子类各自的信息。107 四、任务小结2、用Student类来实现表格的架构(其中Student为派生类并从抽象基类Person继承):在类中封装私有域,类内定义公共的默认构造函数(先调用基类的
59、构造函数),类内定义输出函数输出表头,类内定义输出函数分别返回4个域, 类内定义输出函数输出每一行信息,类内重写基类Person的抽象方法。108 四、任务小结3、用Teacher类来实现表格的架构(其中Teacher为派生类并从抽象基类Person继承):在类中封装私有域,类内定义公共的默认构造函数(先调用基类的构造函数),类内定义输出函数输出表头,类内定义输出函数分别返回4个域, 类内定义输出函数输出每一行信息,类内重写基类Teacher的抽象方法。4、用Program类来封装整个程序的入口方法main():为抽象基类新建引用,为派生类新建对象,用基类引用指向派生类对象,用基类引用指向要重
60、写的抽象方法。109 五、相关知识与技能1、C#2005中多态的好处:多态又称后期绑定,是一种在运行时(just in time)指定方法调用地址的技术。2、C#中多态性。3、虚方法。110 六、任务拓展1、C#中多态的特性是什么?2、C#中多态中基类与派生类应该如何封装函数?3、C#中如何在主函数中分别实现基类与派生类的相应功能?任务一任务一 实现实现C+C+语言中的多态与抽象类语言中的多态与抽象类任务二任务二 实现实现VB.NETVB.NET语言中的多态与抽象类语言中的多态与抽象类任务三任务三 实现实现JAVAJAVA语言中的多态与抽象类语言中的多态与抽象类内容导航一、任务描述二、任务分析三、任务
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 煤气化过程中的合成气质量分析与调控方法考核试卷
- 电气设备射频识别技术与应用考核试卷
- 社会责任报告分析考核试卷
- 2025年消防安全不合格导致房屋租赁合同是否无效
- 2025跨国专利许可合同书
- 安全经验分享用电安全知识
- 工程造价合同书二零二五年
- 大学生职业规划大赛《经济与金融专业》生涯发展展示
- 毒品分析与毒情智慧监测研究重点实验室开放课题基金申请书
- 2025版本的房屋买卖合同
- 2024年江西省高考生物试卷(含答案)
- JJF(民航) 0114-2024 民用航空自动气象观测系统气压传感器校准规范
- 三级电子商务师测试试题库与答案
- 2023年高考历史真题新高考福建卷试题含答案解析
- DZ/T 0430-2023 固体矿产资源储量核实报告编写规范(正式版)
- 【农业技术推广探究文献综述2300字】
- 2024年中铁集装箱运输有限责任公司招聘笔试参考题库附带答案详解
- 物业管理中英文对照外文翻译文献
- 《麻醉后苏醒延迟》课件
- 《物业客服培训》课件
- 06J403-1 楼梯、栏杆、栏板图集
评论
0/150
提交评论