《Java程序设计》实验报告——Java的接口与继承
浙江理工大學
《Java程序設計》
?實驗報告
?20 19~20 20學年第 1學期?????
| 學? 院 | 信息學院 |
| 班? 級 | 計算機科學與技術18(3) |
| 姓? 名 | 申屠志剛 |
| 學? 號 | 2018329621200 |
| 任課教師 | 任祝 ( 第9周 周二 345節) |
?? 計算機科學與技術專業
20 19 年 10 月
《Java程序設計》實 驗 報 告(三)
| 實驗名稱: Java的接口與繼承 | 實驗地點:10-306 |
| 所使用的工具軟件及環境: JDK1.7或1.8與Eclipse ? ? | |
| 一、實驗目的: 熟悉Java類的建立與使用。熟悉類的繼承、多態與動態綁定技術。 | |
| 二、實驗內容: 題目1. 接口 體操比賽計算選手成績的辦法是去掉一個最高分和一個最低分再計算平均分,而學校考察一個班級的某科目的考試情況時,是計算全班學生的平均成績。請實現體操比賽得分計算的Gymnastics 類和學校科目考試分數計算的School 類,這兩個類都實現了ComputerAverage接口。其中,Gymnastics類實現了去掉一個最高分和一個最低分再計算平均分;School類計算全班學生的平均成績。 接口定義如下,其中輸入的參數是一組double類型的分數。 interface ComputerAverage{ public double average(double x[]); } 題目2. 繼承 設計一個類Shape(圖形)包含求面積和周長的area()方法和perimeter()方法以及設置顏色的方法SetColor(),并利用Java多態技術設計其子類Circle(圓形)類、Rectangle(矩形)類和Triangle(三角形)類,并分別實現相應的求面積和求周長的方法。每個類都要覆蓋toString方法。 [] 海倫公式:三角形的面積等于s(s-a)(s-b)(s-c)的開方,其中s=(a+b+c)/2 ? | |
| 三、要求: (1)說明原理 題目1. 接口 Java接口創建與實現 題目2. 繼承 Java類的繼承、多態與動態綁定技術 (2)源代碼 題目1. 接口 Main.java public class Main { ? ??? public static void main(String[] args) { ??????? // TODO 自動生成的方法存根 ??????? ?double a[]={9.89,9.88,9.99,9.12,9.69,9.76,8.97}; ??? ???? double b[]={89,56,78,90,100,77,56,45,36,79,98}; ??? ???? ComputerAverage computer; ??? ???? computer=new Gymnastics(); ??? ???? double result= computer.average(a); ??? ???? System.out.printf("%n"); ??? ???? System.out.printf("體操選手最后得分:%5.3f\n",result); ??? ???? computer=new School(); ??? ???? result=computer.average(b); ??? ???? System.out.printf("班級考試平均分數:%-5.2f\n",result); ??? } ? } ComputerAverage.java public interface ComputerAverage{ ??? public double average(double x[]); } Gymnastics.java public class Gymnastics implements ComputerAverage { ? ??? public double average(double x[]) { ??????? int count=x.length; ??? ??? double aver=0,temp=0; ??? ???? ?? for(int i=0;i<count;i++){ ??? ???? ?????? for(int j=0;j<count;j++){ ??? ???? ?????????? if(x[j]<x[i]) ??? ???? ?????????? { ??? ?????????????????? temp=x[j]; ??? ?????????????????? x[j]=x[i]; ??? ?????????????????? x[i]=temp; ??? ???? ?????????? } ??? ???????????? } ??? ??????? } ??? ???? for(int i=0;i<count-1;i++) ??? ???? { ??? ??? ?aver=aver+x[i]; ??? ???? } ??? ???? if(count>2) ??? ??? ?aver=aver/(count-2); ??? ???? else ??????????? ?aver=0; ??? ???? return aver; ??? } } School.java public class School implements ComputerAverage { ? ??? public double average(double x[]) { ??????? int count=x.length; ??? ??? double aver=0; ??? ??? for(int i=0;i<count;i++){ ??? ???????? aver+=x[i]; ??? ??? } ??? ??? aver=aver/count; ??? ??? return aver; ??? } } 題目2. 繼承 Main.java public class Main { ? ??? public static void main(String[] args) { ??????? // TODO 自動生成的方法存根 ??????? Rectangle r=new Rectangle(3.0,4.0); ??????? Circle c=new Circle(3.0); ??????? Triangle s=new Triangle(4.0,3.0,5.0); ??????? Shape[] shapes=new Shape[3]; ??????? shapes[0]=r; ??????? shapes[1]=c; ??????? shapes[2]=s; ??????? for(int i=0;i<shapes.length;i++) { ??????????? System.out.println(shapes[i].toString()); ??????????? System.out.println("周長為:"+shapes[i].perimeter()+" "+"面積為:"+shapes[i].area()); ??????? } ??? } } Shape.java public abstract class? Shape { ??? String color="black"; ??? public abstract double area(); ??? public abstract double perimeter(); ??? public void SetColor(String newcolor) { ??????? color=newcolor; ??? } } Circle.java public class Circle extends Shape{ ??? double r=0.0; ??? final double PI=3.1415926; ??? Circle(){ ??????? this.r=0; ??? } ??? Circle(double r){ ??????? this.r=r; ??? } ??? public String toString(){ ??????? return "圓:半徑為"+r; ??? } ??? public double area() { ??????? return r*r*PI; ??? } ??? public double perimeter() { ??????? return 2*r*PI; ??? } } Rectangle.java public class Rectangle extends Shape{ ??? double a,b; ??? Rectangle(){ ??????? this.a=0; ??????? this.b=0; ??? } ??? Rectangle(double a,double b){ ??????? this.a=a; ??????? this.b=b; ??? } ??? public String toString(){ ??????? return "矩形:邊長分別為"+a+","+b; ??? } ??? public double area() { ??????? return a*b; ??? } ??? public double perimeter() { ??????? return 2*(a+b); ??? } } Triangle.java public class Triangle extends Shape{ ??? double a,b,c; ??? Triangle(){ ??????? this.a=0; ??????? this.b=0; ??????? this.c=0; ??? } ??? Triangle(double a,double b,double c){ ??????? this.a=a; ??????? this.b=b; ??????? this.c=c; ??? } ??? public String toString(){ ??????? return "三角形:邊長分別為"+a+","+b+","+c; ??? } ??? public double area() { ??????? double s=(a+b+c)/2; ??????? return Math.sqrt(s*(s-a)*(s-b)*(s-c)); ??? } ??? public double perimeter() { ??????? return a+b+c; ??? } } ? ? (3)結果截圖 題目1. 接口 ? ? ? 題目2. 繼承 ? ? ? ? ? ? ? 四、實驗收獲與體會: 1、熟悉Java類的建立與使用。 2、掌握類的概念、類的定義格式、類與結構的關系、類的成員屬性和類的封裝性; 3、理解類的成員的訪問控制的含義,公有、私有和保護成員的區別; 4、學會通過建立類及對象,用類的成員函數和對象訪問類的成員; 5、學會利用建立類的構造函數,完成類的成員的初始化工作; 6、熟悉類的繼承、多態與動態綁定技術。 ??? ? | |
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的《Java程序设计》实验报告——Java的接口与继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python——基本统计值计算
- 下一篇: JavaFX——JavaFX概览