《广东海洋大学实验+6+类的综合应用 计科1178.doc》由会员分享,可在线阅读,更多相关《广东海洋大学实验+6+类的综合应用 计科1178.doc(5页珍藏版)》请在金锄头文库上搜索。
1、实验六 类的综合应用实验目的:(1)掌握类的继承,实现构造函数的继承。(2)多态,通过相同的方法名实现不同的功能以及通过上型转换实现多态。实验内容:1、 有一个shape接口,利用该接口来编写圆柱体,圆锥,长方体,和正方体的表面积与体积的应用程序(其中正方体是长方体的子类,圆锥是圆柱的子类),要求接口回调技术来求这些几何图形的体积和表面积。Interface shapePublic double vol();/体积Public double area();/表面积2 有一个抽象类CompareObject,其中定义一个抽象方法abstract int compareTo(Object obj)
2、用于比较两个对象。然后设计一个类Posisition从CompareObject类派生,该类有x和y两个成员变量表示坐标,该类实现compareTo()方法,用比较两个Posisition对象到原点(0,0)的距离之差。代码1、public class sy6666611111111 public static void main(String args) Cuboid cuboid = new Cuboid(2,3,4);System.out.println(长,宽,高为2,3,4的长方体的体积是:+cuboid.vol();System.out.println(长,宽,高为2,3,4的长方
3、体的表面积是:+cuboid.area();Cube cube = new Cube(2);System.out.println(边长为2的正方体的体积是:+cube.vol();System.out.println(边长为2的正方体的表面积是:+cube.area();circularCylinder circular = new circularCylinder(3,5);System.out.println(半径为3,高为5的圆柱的体积是:+circular.vol();System.out.println(半径为3,高为5的圆柱的表面积是:+circular.area();Cone c
4、one = new Cone(3,4);System.out.println(半径为3,高为5的圆锥的体积是:+cone.vol();System.out.println(半径为3,高为5的圆锥的表面积是:+cone.area();Ball ball = new Ball(5);System.out.println(半径为5的球的体积:+ball.vol();System.out.println(半径为5的球的表面积:+ball.area();interface shape public double vol(); /体积public double area(); /表面积class Cubo
5、id implements shape /长方体double a,b,c;Cuboid()Cuboid(double a,double b,double c)this.a = a;this.b = b;this.c = c;public double vol()double v = a*b*c;return v;public double area() double s = 2*(a*b+b*c+a*c);return s;class Cube extends Cuboid /正方体Cube(double a)this.a = a;this.b = a;this.c = a;class cir
6、cularCylinder implements shape /圆柱double radius;double height;circularCylinder()circularCylinder(double r,double h) this.radius = r;this.height = h;public double vol()double v = 3.14*radius*radius*height;return v;public double area() double a = 3.14*radius*radius;double b = 2*3.14*radius*height;doub
7、le s = b+2*a;return s;class Cone extends circularCylinder /圆锥 Cone()Cone(double r,double h) super(r,h);public double vol()double v = super.vol()/3;return v;public double area() double l = Math.sqrt(radius*radius+height*height);double s = 3.14*radius*radius+3.14*radius*l;return s; class Ball implemen
8、ts shape double r;public Ball(double r) this.r=r; public double vol() return (4/3)*3.14*r*r*r;public double area() / TODO Auto-generated method stubreturn 4*3.14*r*r;2、package GDOU_JIKE;import java.util.Scanner;abstract class CompareObject /定义抽象类abstract int compareTo(Posisition a,Posisition b);clas
9、s Posisition extends CompareObject /定义Posisition类int x;int y;Posisition()x=0;y=0;Posisition(int a,int b)x=a;y=b;int compareTo(Posisition a,Posisition b)int ci; int ai=a.x*a.x+a.y*a.y; int bi=b.x*b.x+b.y*b.y; ai=(int) Math.sqrt(ai); bi=(int) Math.sqrt(bi); ci=ai-bi; if(ci0) ci=0-ci; return ci; public
10、 class Exercise5 public static void main(String args)System.out.print(创建点A,请输入横坐标和纵坐标:);Scanner input = new Scanner(System.in);Scanner input2 = new Scanner(System.in);int ai = input.nextInt(); / 输入int bi = input2.nextInt();Posisition A=new Posisition(ai,bi);System.out.print(创建点B,请输入横坐标和纵坐标:);Scanner input3 = new Scanner(System.in);Scanner input4 = new Scanner(System.in);int ci = input3.nextInt(); / 输入int di = input4.nextInt();Posisition B=new Posisition(ci,di);int C=A.compareTo(A, B);System.out.print(A(+ai+,+bi+)点和B(+ci+,+di+)点到原点的距离之差为:+C);