JAVA實驗三 抽象類的繼承和介面的實現 (多型)
題目要求:
1.編寫一個ComputerAverage抽象類,類中有一個抽象方法求平均分average,可以有引數。定義Gymnastics類和School類,它們都是ComputerAverage的子類,Gymnastics類中計算選手的平均成績的方法是去掉一個最低分,去掉一個最高分,然後求平均分。School中計算平均分的方法是直接是總分除以總科目。
要求:定義ComputerAverage的物件為上轉型物件,並呼叫重寫的方法averge。
2.編寫一個類,該類有如下一個方法:
publicint f(int a,int b){……//要求該方法將返回a和b的最大公約數},再編寫一個該類的子類,要求子類重寫方法f(),而且重寫的方法將返回兩個正整數的最小公倍數。
要求:在重寫的方法的方法體中需要呼叫被隱藏的方法返回a和b的最大公約數m,然後將(a*b/m)返回;在應用的程式的主類中分別使用父類和子類建立物件,並分別呼叫方法f()計算兩個正整數的最大公約數和最小公倍數。
3.編寫一個圓錐類,能夠計算圓錐的體積,要求圓錐類的建構函式中有一引數是圓類的一個物件。
4 定義介面Shape,其中包括Area方法。類Circle、Square和Triangle均實現了介面Shape。定義主函式,建立元素個數為3的Shape型別的一維陣列,分別為陣列元素建立Circle、Square和Triangle型別的物件,最後分別呼叫各陣列元素的Area方法,輸出相關資訊。
5定義一個介面,用於查詢課程
定義一個類 Student,包括如下屬性:學號(ID)、姓名(name)、性別(Sex)、出生日期(birthDate)、專業(specialty)、課程(course),實現以下方法:每個屬性的獲取和定義,要求至少包含一個構造方法。定義一個介面類,定義方法query_course_catalog()用來查詢課程。編寫一個介面,定義相關選課操作,定義Student 實現該介面。
程式碼實現:1.
package cn.edu.nefu.zhihu; abstract class ComputerAverage { double []data; abstract double average(double []data); } class Gymnastics extends ComputerAverage { double []data; Gymnastics(){ } Gymnastics(double []data){ this.data=data; } @Override double average(double []data) { double max,min; int k1=0,k2=0; max=min=data[0]; for(int i=0;i<data.length;i++){ if(data[i]>max){ max=data[i]; k1=i; } else if(data[i]<min){ min=data[i]; k2=i; } } data[k1]=0; data[k2]=0; double sum=0; for(int i=0;i<data.length;i++){ sum+=data[i]; } sum=sum/(data.length-2); return sum; } } class School extends ComputerAverage{ double []data; School(){ } School(double []data){ this.data=data; } @Override double average(double []data) { double sum=0; for(int i=0;i<data.length;i++){ sum+=data[i]; } sum=sum/data.length; return sum; } } public class Test { public static void main(String[] args) { int n=6; double []data=new double[n]; for(int i=0;i<n;i++){ data[i]=i; } ComputerAverage g=new Gymnastics(data); //上轉型物件 System.out.println(g.average(data)); for(int i=0;i<n;i++){ data[i]=i; } ComputerAverage s=new School(data); //上轉型物件 System.out.println(s.average(data)); } }
2.
A. Java
package cn.nefu.edu.zhihu;
public class A {
public int f(int a,int b){
/*if(b==0)
return a;
else
return f(b,a%b);*/ //不能用遞迴來寫gcd函式
int t,gcdd = 1;
if(a<b)
t=a;
else t=b;
for(int i=2;i<=t;i++){
if(a%i==0 && b%i==0){
gcdd=i;
break;
}
}
return gcdd;
}
}
B. Java
package cn.nefu.edu.zhihu;
public class B extends A{
public int f(int a,int b){
int dd=super.f(a,b);
int lcm=a*b/dd;
return lcm;
}
}
Test2.java
package cn.nefu.edu.zhihu;
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
int a=reader.nextInt();
int b=reader.nextInt();
A fuqin=new A();
B erzi=new B();
System.out.println(fuqin.f(a,b));
System.out.println(erzi.f(a,b));
}
}
3.
Yuanzhui.java
package cn.edu.nefu.zhihu1;
public class Yuanzhui {
double h;
Yuan y1;
Yuanzhui(){
}
Yuanzhui(double h,Yuan y1){
this.h=h;
this.y1=y1;
}
double tiji(){
return y1.Area()*h;
}
}
Yuan.java
package cn.edu.nefu.zhihu1;
public class Yuan {
final double pi=3.14;
double r;
Yuan(){}
Yuan(double r){
this.r=r;
}
double Area(){
return pi*r*r;
}
}
Test2.java
package cn.edu.nefu.zhihu1;
public class Test2 {
public static void main(String[] args) {
Yuan y1=new Yuan(1);
Yuanzhui yy1=new Yuanzhui(3,y1);
System.out.println(yy1.tiji());
}
}
4.
Shape.java
package cn.edu.nefu.zhihu;
public interface Shape {
double Area();
}
Circle.java
package cn.edu.nefu.zhihu;
public class Circle implements Shape{
double r;
Circle(){
}
Circle(double r){
this.r=r;
}
@Override
public double Area() {
return 3.14*r*r;
}
}
Square.java
package cn.edu.nefu.zhihu;
public class Square implements Shape{
double a;
Square(){
}
Square(double a){
this.a=a;
}
@Override
public double Area() {
return a*a;
}
}
Triangle.java
package cn.edu.nefu.zhihu;
public class Triangle implements Shape{
double a,b;
Triangle(){
}
Triangle(double a,double b){
this.a=a;
this.b=b;
}
@Override
public double Area() {
return a*b;
}
}
Test1.java
package cn.edu.nefu.zhihu;
public class Test1 {
public static void main(String[] args) {
Shape []data=new Shape[3];
data[0]=new Circle(2);
System.out.println(data[0].Area());
data[1]=new Square(2);
System.out.println(data[1].Area());
data[2]=new Triangle(2,3);
System.out.println(data[2].Area());
}
}
5.
SStudent.java
package cn.edu.nefu.zhihu;
public interface SStudent {
String query_course_catalog(int idd,String specialtyy);
}
Student.java
package cn.edu.nefu.zhihu;
public class Student implements SStudent{
private int id;
private String name;
private char sex;
private String birthData,specialty,course;
public Student(){}
public Student(int id, String name, char sex, String data, String specialty, String course) {
birthData = data;
this.course = course;
this.id = id;
this.name = name;
this.sex = sex;
this.specialty = specialty;
}
public String query_course_catalog(int idd,String specialtyy) {
if(idd==this.id && specialtyy==this.specialty)
return course;
else
return null;
}
public void setId(int id) {
this.id=id;
}
public int getId() {
return id;
}
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void setSex(char sex) {
this.sex=sex;
}
public char getSex() {
return sex;
}
public void setBirthData(String birthData) {
this.birthData=birthData;
}
public String getBirthData() {
return birthData;
}
public void setspecialty(String specialty) {
this.specialty=specialty;
}
public String getspecialty() {
return specialty;
}
public void setcourse(String course) {
this.course=course;
}
public String getcourse() {
return course;
}
}
Test.java
package cn.edu.nefu.zhihu;
public class Test1 {
public static void main(String[] args) {
Student s1=new Student(01,"zs",'f',"19960101","jisuanji","JAVA");
Student s2=new Student(02,"ls",'m',"19950202","ruanjian","C++");
String kecheng1=s1.query_course_catalog(01,"jisuanji");
System.out.println(kecheng1);
String kecheng2=s2.query_course_catalog(02,"ruanjian");
System.out.println(kecheng2);
}
}