您的位置:首页 > 编程语言 > Java开发

JAVA实验三 抽象类的继承和接口的实现 (多态)

2016-04-14 21:00 711 查看
题目要求:

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
;
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: