实验目的:
(1)掌握类的继承,实现构造函数的继承。
(2)多态,通过相同的方法名实现不同的功能以及通过上型转换实现多态。
实验内容:
1、有一个shape接口,利用该接口来编写圆柱体,圆锥,长方体,和正方体的表面积与体积的应用程序(其中正方体是长方体的子类,圆锥是圆柱的子类),要求接口回调技术来求这些几何图形的体积和表面积。
Interface shape{
Public double vol();//体积
Public double area();//表面积
}
2 有一个抽象类CompareObject,其中定义一个抽象方法abstract int compareTo(Object obj)用于比较两个对象。然后设计一个类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的长方体的表面积是:"+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 cone = 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 Cuboid 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 circularCylinder 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;
double 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 implements 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 stub
return 4*3.14*r*r;
}
}
2、
package GDOU_JIKE;
import java.util.Scanner;
abstract class CompareObject{ //定义抽象类
abstract int compareTo(Posisition a,Posisition b);
}
class 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(ci<0)
{ci=0-ci;}
return ci;
}
}
public 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);
}
}下载本文