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);
	}
}


你可能感兴趣的:(多态,接口的实现,抽象类的继承)