1. 程式人生 > >JAVA實驗三 抽象類的繼承和介面的實現 (多型)

JAVA實驗三 抽象類的繼承和介面的實現 (多型)

題目要求:

1.編寫一個ComputerAverage抽象類,類中有一個抽象方法求平均分average,可以有引數。定義Gymnastics類和School類,它們都是ComputerAverage的子類,Gymnastics類中計算選手的平均成績的方法是去掉一個最低分,去掉一個最高分,然後求平均分。School中計算平均分的方法是直接是總分除以總科目。

要求:定義ComputerAverage的物件為上轉型物件,並呼叫重寫的方法averge


2.編寫一個類,該類有如下一個方法:

publicint f(int a,int b){……//要求該方法將返回a和b的最大公約數},再編寫一個該類的子類,要求子類重寫方法f(),而且重寫的方法將返回兩個正整數的最小公倍數。

要求:在重寫的方法的方法體中需要呼叫被隱藏的方法返回ab的最大公約數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);
	}
}