Java实验报告 继承多态接口和异常处理.docx
- 文档编号:26984678
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:15
- 大小:83.49KB
Java实验报告 继承多态接口和异常处理.docx
《Java实验报告 继承多态接口和异常处理.docx》由会员分享,可在线阅读,更多相关《Java实验报告 继承多态接口和异常处理.docx(15页珍藏版)》请在冰豆网上搜索。
Java实验报告继承多态接口和异常处理
实验5继承、多态、接口和异常处理
一、实验目的
1、掌握Java的类和对象的声明和使用方法;
2、掌握Java的类的继承和实现方法;
3、掌握多态性在类的继承中的运用;
4、掌握接口的定义与使用;
5、掌握基本异常的处理机制;
6、熟悉try语句与catch语句的搭配使用;
7、了解有异常处理与没有异常处理的差别;
8、多重catch语句的使用;
9、使用Throws声明异常和Throw抛出异常。
二、实验环境
1、PC微机;
2、DOS操作系统或Windows操作系统;
3、Javasdk程序开发环境、eclipse集成环境。
三、实验内容
1.设计三个类,分别是学生类Student,本科生类UnderGraduate,研究生类Postjgraduate,其中Student类是一个抽象类,它包含学生的基本信息如姓名、所学课程、课程成绩等,而Undergraduate类和Postgraduate类都是Student类的子类,这两个类计算课程成绩等级的方法有所不同,如下表所示。
假设某班级里既有研究生又有本科生,编写程序统计出全班学生的成绩等级并打印出来。
本科生标准
研究生标准
80~100优秀
90~100优秀
70~80良好
80~90良好
60~70一般
70~80一般
50~60及格
60~70及格
50以下不及格
60以下不及格
2.设计实现一个Soundable接口,该接口由三个类Radio、Walkman和Mobilephone具体实现,并设计一个应用程序类来使用这些类。
3.要求设计一个GUI图形窗口程序,该程序让用户输入一个星期中的任意一天的数字1-7,然后输出该数字所对应的是星期几。
四、实验步骤
●实验内容一
1.建立packageexperiment5_1,其最终目录结构如下:
2.建立Student类:
packageexperiment5_1;
publicabstractclassStudent{
finalstaticintCourseNo=3;
Stringname;
Stringtype;
int[]courses;
StringcourseGrade;
publicStudent(Stringname){
this.name=name;
courses=newint[CourseNo];
courseGrade="";
}
publicabstractvoidcalculateGrade();
publicStringgetName(){
returnname;
}
publicStringgetType(){
returntype;
}
publicStringgetCourseGrade(){
returncourseGrade;
}
publicintgetCourseScore(intcourseNumber){
returncourses[courseNumber];
}
publicvoidsetName(Stringname){
this.name=name;
}
publicvoidsetType(Stringtype){
this.type=type;
}
publicvoidsetCourseScore(intcourseNumber,intcourseScore){
//按课程索引号设置课程成绩
this.courses[courseNumber]=courseScore;
}
}
3.建立外部类
(1)研究生类Postjgraduate
packageexperiment5_1;
publicclasspostgraduateextendsStudent{
publicpostgraduate(Stringname){
super(name);
type="研究生";
}
publicvoidcalculateGrade(){
//TODOAuto-generatedmethodstub
inttotal=0;
doubleaverage=0;
for(inti=0;i total+=courses[i]; }; average=total/CourseNo; if(average>=90&&average<100)courseGrade="优秀"; elseif(average>=80&&average<90)courseGrade="良好"; elseif(average>=70&&average<80)courseGrade="一般"; elseif(average>=60&&average<70)courseGrade="及格"; elsecourseGrade="不及格"; } } (2)本科生类UnderGraduate packageexperiment5_1; publicclassundergraduateextendsStudent{ publicundergraduate(Stringname){ super(name); type="本科生"; } publicvoidcalculateGrade(){ inttotal=0; doubleaverage=0; for(inti=0;i total+=getCourseScore(i); }; average=total/CourseNo; if(average>=80&&average<100)courseGrade="优秀"; elseif(average>=70&&average<80)courseGrade="良好"; elseif(average>=60&&average<70)courseGrade="一般"; elseif(average>=50&&average<60)courseGrade="及格"; elsecourseGrade="不及格"; } } 4.编写代码测试函数 packageexperiment5_1; publicclasspolymorphism{ publicstaticvoidmain(String[]args){ Student[]students=newStudent[5]; students[0]=newundergraduate("陈建平"); students[1]=newundergraduate("鲁向东"); students[2]=newpostgraduate("匡晓华"); students[3]=newundergraduate("周丽娜"); students[4]=newpostgraduate("梁欣欣"); for(inti=0;i<5;i++){ students[i].setCourseScore(0,87); students[i].setCourseScore(1,90); students[i].setCourseScore(2,78); } for(inti=0;i<5;i++){ students[i].calculateGrade(); } System.out.println("姓名"+"类型"+"成绩"); System.out.println("-----------------------"); for(inti=0;i<5;i++){ System.out.println(students[i].getName()+""+ students[i].getType()+""+ students[i].getCourseGrade()); } } } ●实验内容二 1.建立packageexperiment5_2,其最终目录结构如下: 2.写接口Soundable代码: packageexperiment5_2; publicinterfaceSoundable{ publicvoidincreaseVolume(); publicvoiddecreaseVolume(); publicvoidstopSound(); publicvoidplaySound(); } 3.创建三个类Radio、Walkman和Mobilephone具体实现,分别添加代码: //Mobilephone类 packageexperiment5_2; classMobilephoneimplementsSoundable{ publicvoidincreaseVolume(){ System.out.println("增大手机音量"); } publicvoiddecreaseVolume(){ System.out.println("减小手机音量"); } publicvoidstopSound(){ System.out.println("关闭手机"); } publicvoidplaySound(){ System.out.println("手机发出来电铃声"); } } //Walkman类 packageexperiment5_2; classWalkmanimplementsSoundable{ publicvoidincreaseVolume(){ System.out.println("增大随声听音量"); } publicvoiddecreaseVolume(){ System.out.println("减小随声听音量"); } publicvoidstopSound(){ System.out.println("关闭随声听"); } publicvoidplaySound(){ System.out.println("随声听发出音乐"); } } //Radio类 packageexperiment5_2; classRadioimplementsSoundable{ publicvoidincreaseVolume(){ System.out.println("增大收音机音量"); } publicvoiddecreaseVolume(){ System.out.println("减小收音机音量"); } publicvoidstopSound(){ System.out.println("关闭收音机"); } publicvoidplaySound(){ System.out.println("收音机播放广播"); } } 4.创建people类及编写测试代码: //People类 packageexperiment5_2; classPeople{ publicvoidlisten(Soundables){ s.playSound(); } } //测试代码 packageexperiment5_2; importjava.util.Scanner; publicclassInterfaceTest{ publicstaticvoidmain(String[]args){ inti; Peoplesportsman=newPeople(); Scannerscanner=newScanner(System.in); Soundable[]soundDevice=newSoundable[3]; //往声音设备数组中放入能发声的设备 soundDevice[0]=newRadio(); soundDevice[1]=newWalkman(); soundDevice[2]=newMobilephone(); System.out.println("你想听什么? 请输入选择: 0-收音机1-随声听2-手机"); i=scanner.nextInt(); //开始听声音 sportsman.listen(soundDevice[i]); soundDevice[i].increaseVolume(); soundDevice[i].stopSound(); scanner.close(); } } ●实验内容三 1.建立packageexperiment5_3,其最终目录结构如下 packageexperiment5_3; importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; publicclassDateTransfextendsJFrameimplementsKeyListener { /** * */ privatestaticfinallongserialVersionUID=1L; privatestaticDateTransffrm; privatestaticJTextFieldtxt; privatestaticJTextFielddata; DateTransf(){ setTitle("数字与星期转换"); setLocation(700,300); setSize(400,130); } publicstaticvoidmain(String[]args){ frm=newDateTransf(); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frm.setLayout(newGridLayout(2,2)); txt=newJTextField(12); data=newJTextField(12); JLabellable1=newJLabel("输入数字: "); JLabellable2=newJLabel("星期几: "); frm.add(lable1); txt.addKeyListener(frm); frm.add(txt); frm.add(lable2); frm.add(data); frm.setVisible(true); } publicvoidkeyPressed(KeyEvente){ if(e.getSource()==txt){ if(e.getKeyCode()==KeyEvent.VK_ENTER)//判断按下的键是否是回车键 { try{ intnumber=Integer.parseInt(txt.getText()); switch(number){ case1: data.setText("Mon"); break; case2: data.setText("Tue"); break; case3: data.setText("Wen"); break; case4: data.setText("Thu"); break; case5: data.setText("Fri"); break; case6: data.setText("Sat"); break; case7: data.setText("Sun"); break; default: JOptionPane.showMessageDialog(null,"您输入的数字不是1~7","无效日期",JOptionPane.INFORMATION_MESSAGE); break; } }catch(Exceptione1){ //TODO: handleexception JOptionPane.showMessageDialog(null,"您输入的不是整数","无效日期",JOptionPane.INFORMATION_MESSAGE); } } } } publicvoidkeyReleased(KeyEvente){ } publicvoidkeyTyped(KeyEvente){ } } 2.编译运行 五、实验结果 ●实验内容一结果: ●实验内容二结果: ●实验内容三结果: 六、实验小结 1.这次实验的内容比较多,需要掌握Java的类和对象的声明和使用方法、Java的类的继承和实现方法、多态性在类的继承中的运用、接口的定义与使用、基本异常的处理机制、try语句与catch语句的搭配使用等等; 2.在实验过程中,重点是要区分好实例和类,灵活掌握类的调用。 理解接口的含义;体会try语句和catch语句在逻辑上的优势; 3.在实验过程中,刚开始分不清各个类之间的关系以及调用,后来专门花时间理解类和接口的含义,把这些弄明白之后,就比较既简单了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java实验报告 继承多态接口和异常处理 Java 实验 报告 继承 接口 异常 处理