Java试验报告3
- 格式:doc
- 大小:91.00 KB
- 文档页数:9
1 实验三 继承和多态与接口的实现和应用 一.实验目的 1掌握多态性在继承中的应用 2理解动态绑定的含义 3学会使用抽象类 4学习使用内部类和局部类的用法 5掌握接口的实现方式和理解接口与抽象类的区别 二.实验任务 请设计3个类,分别是学生类student,本科生类undergraduate,研究生类postgraduate,其中学生类是一个抽象类,本科生类和研究生类是学生类的子类,他们之间的主要差别是计算课程成绩等级的方法不同。编制一个程序,关于嵌套类、内部类和局部类。设计和实现一个Soundable接口,该接口具有发声功能,同时还能够调节声音大小。
三.实验环境 PC微机 Windows 操作系统 Eclipse编程环境 四.实验步骤
代码1 package Polymorphism;
abstract class Student{ final static int CourseNo = 3; String name; String type; int[] courses; String courseGrade; public Student(String name) { this.name = name; courses = new int[CourseNo]; this.courseGrade = " "; } public abstract void calculateGrade(); public String getName() 2
{ return name; } public String getType() { return type; } public String getCourseGrade() { return courseGrade; } public int getCourseScore(int courseNumber) { return courses[courseNumber]; } public void setName(String name) { this.name = name; } public void setType(String type) { this.type = type; } public void setCourseScore(int courseNumber, int courseScore) { courses[courseNumber] = courseScore; } } 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{ total+=courses[i]; } average = total/CourseNo; if(average>=80&&average<100) courseGrade = "优秀"; 3
else if(average>=70&&average<80) courseGrade = "良好"; else if(average>=60&&average<70) courseGrade = "一般"; else if(average>=50&&average<60) courseGrade = "及格"; else courseGrade = "不及格"; } }
class Postgraduate extends Student{ public Postgraduate(String name) { super(name); type = "研究生"; } public void calculateGrade() { int total = 0; double average = 0; for(int i=0;i{ total+=courses[i]; } average = total/CourseNo; if(average>=90&&average<100) courseGrade = "优秀"; else if(average>=80&&average<90) courseGrade = "良好"; else if(average>=70&&average<80) courseGrade = "一般"; else if(average>=60&&average<70) courseGrade = "及格"; else courseGrade = "不及格"; } }
public class Polymorpphism { public static void main(String[] args) { Student[] students = new Student[5]; students[0] = new Undergraduate("陈建平"); students[1] = new Undergraduate("鲁向东"); students[2] = new Postgraduate("匡晓华"); students[3] = new Undergraduate("周丽娜"); students[4] = new Postgraduate("梁欣欣");
for(int i=0;i<5;i++) { students[i].setCourseScore(0,87); students[i].setCourseScore(1,90); 4
students[i].setCourseScore(2,78); } for(int i=0;i<5;i++) students[i].calculateGrade(); System.out.println("姓名"+" 类型"+" 成绩"); System.out.println("-------------------------");
for(int i=0;i<5;i++) { System.out.println(students[i].getName()+" "+students[i].getType()+" "+students[i].getCourseGrade()); } }
} 实验结果截图:
代码2 class Outer { int data[]; Outer(int x[]) { data = x; }
void checkInner() { Inner innerObj = new Inner(); //调用Inner对象的show()方法 innerObj.show(); System.out.println("内部类计算的平均值: " + innerObj.average()); }
void checkLocal() { class Local { void show() { 5
System.out.print("从局部类显示数组元素:"); for (int i=0; i System.out.print(data[i]+" "); }; System.out.println(); } int average() { int sum=0; for (int i=1; i sum += data[i]; }; //返回data数组的平均值 return (sum/data.length); } }; Local localObj = new Local(); localObj.show( ); System.out.println("局部类计算的平均值: " + localObj.average()); }
class Inner { void show() { System.out.print("从内部类显示数组元素:"); for (int i=0; i// 显示data数组的每个元素 System.out.print(data[i]+" "); }; System.out.println(); }
int average() { int sum=0; for (int i=1; i sum += data[i]; }; return sum/data.length; } } }
public class InnerClassTest { public static void main(String[] args) {