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.
2.
3.
4.
5.
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); } }
相关文章推荐
- eclipse快捷键
- Mybatis项目小结
- Java代码执行顺序
- spring,mybatis事务管理配置与@Transactional注解使用
- java学习---java内存泄露有哪些
- Java 中的方法内部类
- 排序算法-归并排序
- [置顶] Java设计模式(一) 简单工厂模式不简单
- Java IO1:IO和File
- Java 中的静态内部类
- spring aop如何织入代码
- Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg';JAVA_HOME环境变量失效的解决方法
- Spring mvc实现验证码
- 5、java反射基础
- eclipse的jni配置
- struts2整合kindeditor有感
- Spring mvc + MyBatis 整合Shiro
- Java 中的成员内部类
- 线程-002-基本的线程机制
- java学习---JVM中的垃圾收集算法和Heap分区简记