1、Java实验报告 继承多态接口和异常处理实验5 继承、多态、接口和异常处理一、实验目的1、掌握Java的类和对象的声明和使用方法;2、掌握Java的类的继承和实现方法;3、掌握多态性在类的继承中的运用;4、掌握接口的定义与使用;5、掌握基本异常的处理机制; 6、熟悉try语句与catch语句的搭配使用; 7、了解有异常处理与没有异常处理的差别; 8、多重catch语句的使用;9、使用Throws声明异常和Throw抛出异常。二、实验环境1、PC微机;2、DOS操作系统或 Windows 操作系统;3、Java sdk程序开发环境、eclipse集成环境。三、实验内容1. 设计三个类,分别是学生
2、类Student,本科生类UnderGraduate,研究生类Postjgraduate,其中Student类是一个抽象类,它包含学生的基本信息如姓名、所学课程、课程成绩等,而Undergraduate类和Postgraduate类都是Student类的子类,这两个类计算课程成绩等级的方法有所不同,如下表所示。假设某班级里既有研究生又有本科生,编写程序统计出全班学生的成绩等级并打印出来。本科生标准研究生标准80100 优秀90100 优秀7080 良好8090 良好6070 一般7080 一般5060 及格6070 及格50以下 不及格60以下 不及格2. 设计实现一个Soundable接口,
3、该接口由三个类Radio、Walkman和Mobilephone具体实现,并设计一个应用程序类来使用这些类。3要求设计一个GUI图形窗口程序,该程序让用户输入一个星期中的任意一天的数字1-7,然后输出该数字所对应的是星期几。 四、实验步骤 实验内容一1.建立package experiment5_1,其最终目录结构如下:2.建立Student类:package experiment5_1;public abstract class Student final static int CourseNo = 3; String name; String type; int courses; Stri
4、ng courseGrade; public Student(String name) this.name = name; courses = new intCourseNo; courseGrade = ; public abstract void calculateGrade(); public String getName( ) return name; public String getType( ) return type ; public String getCourseGrade( ) return courseGrade; public int getCourseScore(i
5、nt courseNumber) return coursescourseNumber; public void setName(String name) this.name = name; public void setType(String type) this.type = type; public void setCourseScore(int courseNumber, int courseScore) /按课程索引号设置课程成绩 this.coursescourseNumber = courseScore ; 3.建立外部类(1)研究生类Postjgraduatepackage e
6、xperiment5_1;public class postgraduate extends Student public postgraduate(String name) super(name); type = 研究生; public void calculateGrade() / TODO Auto-generated method stub int total = 0; double average = 0; for (int i = 0; i =90&average=80&average=70&average=60&average70) courseGrade = 及格; else
7、courseGrade = 不及格; (2)本科生类UnderGraduatepackage experiment5_1;public class undergraduate extends Student public undergraduate(String name ) super(name); type = 本科生; public void calculateGrade() int total = 0; double average = 0; for (int i = 0; i =80&average=70&average=60&average=50&average60) course
8、Grade = 及格; else courseGrade = 不及格; 4.编写代码测试函数package experiment5_1;public class polymorphism public static void main(String args) Student students = new Student5; students0 = new undergraduate(陈建平); students1 = new undergraduate(鲁向东); students2 = new postgraduate(匡晓华); students3 = new undergraduate
9、(周丽娜); students4 = new postgraduate(梁欣欣); for (int i=0; i5 ;i+) studentsi.setCourseScore(0,87); studentsi.setCourseScore(1,90); studentsi.setCourseScore(2,78); for (int i=0; i5 ;i+) studentsi.calculateGrade(); System.out.println(姓名 + 类型 + 成绩); System.out.println(-); for (int i=0; i5 ;i+) System.out.
10、println(studentsi.getName( )+ + studentsi.getType( )+ + studentsi.getCourseGrade( ); 实验内容二1.建立package experiment5_2,其最终目录结构如下:2.写接口Soundable代码:package experiment5_2;public interface Soundable public void increaseVolume( ); public void decreaseVolume( ); public void stopSound( ); public void playSoun
11、d( );3.创建三个类Radio、Walkman和Mobilephone具体实现,分别添加代码:/ Mobilephone类package experiment5_2;class Mobilephone implements Soundable public void increaseVolume( ) System.out.println(增大手机音量); public void decreaseVolume( ) System.out.println(减小手机音量); public void stopSound( ) System.out.println(关闭手机); public vo
12、id playSound( ) System.out.println(手机发出来电铃声); / Walkman类package experiment5_2;class Walkman implements Soundable public void increaseVolume( ) System.out.println(增大随声听音量); public void decreaseVolume( ) System.out.println(减小随声听音量); public void stopSound( ) System.out.println(关闭随声听); public void playS
13、ound( ) System.out.println(随声听发出音乐); / Radio类package experiment5_2;class Radio implements Soundable public void increaseVolume( ) System.out.println(增大收音机音量); public void decreaseVolume( ) System.out.println(减小收音机音量); public void stopSound( ) System.out.println(关闭收音机); public void playSound( ) Syste
14、m.out.println(收音机播放广播); 4.创建people类及编写测试代码:/People类package experiment5_2;class People public void listen(Soundable s) s.playSound( ); /测试代码package experiment5_2;import java.util.Scanner;public class InterfaceTest public static void main(String args) int i; People sportsman = new People( ); Scanner s
15、canner = new Scanner(System.in); Soundable soundDevice = new Soundable3; /往声音设备数组中放入能发声的设备 soundDevice0 = new Radio( ); soundDevice1 = new Walkman( ); soundDevice2 = new Mobilephone(); System.out.println(你想听什么? 请输入选择:0-收音机 1-随声听 2-手机); i = scanner.nextInt( ); /开始听声音 sportsman.listen(soundDevicei); s
16、oundDevicei.increaseVolume( ); soundDevicei.stopSound(); scanner.close(); 实验内容三1.建立package experiment5_3,其最终目录结构如下package experiment5_3;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DateTransf extends JFrame implements KeyListener /* * */ private static final long seria
17、lVersionUID = 1L; private static DateTransf frm; private static JTextField txt; private static JTextField data; DateTransf() setTitle(数字与星期转换); setLocation(700, 300); setSize(400,130); public static void main(String args) frm = new DateTransf(); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr
18、m.setLayout(new GridLayout(2,2); txt = new JTextField(12); data = new JTextField(12); JLabel lable1 = new JLabel(输入数字:); JLabel lable2 = new JLabel(星期几:); frm.add(lable1); txt.addKeyListener(frm); frm.add(txt); frm.add(lable2); frm.add(data); frm.setVisible(true); public void keyPressed(KeyEvent e)
19、if (e.getSource() = txt) if (e.getKeyCode() = KeyEvent.VK_ENTER) / 判断按下的键是否是回车键 try int number = Integer.parseInt(txt.getText(); switch (number) case 1:data.setText(Mon); break; case 2:data.setText(Tue); break; case 3:data.setText(Wen); break; case 4:data.setText(Thu); break; case 5:data.setText(Fri
20、); break; case 6:data.setText(Sat); break; case 7:data.setText(Sun); break; default: JOptionPane.showMessageDialog(null, 您输入的数字不是17,无效日期,JOptionPane.INFORMATION_MESSAGE); break; catch (Exception e1) / TODO: handle exception JOptionPane.showMessageDialog(null, 您输入的不是整数,无效日期,JOptionPane.INFORMATION_ME
21、SSAGE); public void keyReleased(KeyEvent e) public void keyTyped(KeyEvent e) 2.编译运行五、实验结果 实验内容一结果: 实验内容二结果: 实验内容三结果:六、实验小结1.这次实验的内容比较多,需要掌握Java的类和对象的声明和使用方法、Java的类的继承和实现方法、多态性在类的继承中的运用、接口的定义与使用、基本异常的处理机制、try语句与catch语句的搭配使用等等;2. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调用。理解接口的含义;体会try语句和catch语句在逻辑上的优势;3.在实验过程中,刚开始分不清各个类之间的关系以及调用,后来专门花时间理解类和接口的含义,把这些弄明白之后,就比较既简单了。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1