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.在实验过程中,刚开始分不清各个类之间的关系以及调用,后来专门花时间理解类和接口的含义,把这些弄明白之后,就比较既简单了。