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

来源:互联网 发布:深圳湾软件产业基地 编辑:程序博客网 时间:2024/06/05 19:04

题目要求:

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;}@Overridedouble 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;}@Overridedouble 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.Javapackage cn.nefu.edu.zhihu;public class A {public int f(int a,int b){/*if(b==0)return a;elsereturn 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.Javapackage 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.javapackage 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.javapackage 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.javapackage 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.javapackage 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.javapackage cn.edu.nefu.zhihu;public interface Shape {double Area();}Circle.javapackage cn.edu.nefu.zhihu;public class Circle implements Shape{double r;Circle(){}Circle(double r){this.r=r;}@Overridepublic double Area() {return 3.14*r*r;}}Square.javapackage cn.edu.nefu.zhihu;public class Square implements Shape{double a;Square(){}Square(double a){this.a=a;}@Overridepublic double Area() {return a*a;}}Triangle.javapackage cn.edu.nefu.zhihu;public class Triangle implements Shape{double a,b;Triangle(){}Triangle(double a,double b){this.a=a;this.b=b;}@Overridepublic double Area() {return a*b;}}Test1.javapackage 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.javapackage cn.edu.nefu.zhihu;public interface SStudent {String query_course_catalog(int idd,String specialtyy);}Student.javapackage 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;elsereturn 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.javapackage 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);}}


1 0
原创粉丝点击