java实验8 接口与类的多态 - 答案 下载本文

实验八 接口与类的多态

一、实验时间: 姓名: 学号: 二、 实验目的

1、 理解接口的作用;

2、 掌握接口的定义方式; 3、 掌握接口的继承;

4、 掌握通过类来实现接口; 5、 理解并掌握类的多态;

三、知识点

1、接口的定义; 2、接口的实现; 3、类的多态

四、实验内容与步骤

1、编写程序为公交车的老人卡、学生卡和普通市民卡类提供收费功能,将收费功能提取,以接口的形式定义,然后被这三种卡类实现。再定义一个刷卡机类,能够对这三类卡进行刷卡操作。最后编写一个测试类,用于测试刷卡机对公交车三类卡的刷卡操作。 //接口

public interface Shuaka { void shoufei();

}

//成人卡

public class AdultCard implements Shuaka {

@Override

public void shoufei() {

// TODO Auto-generated method stub

System.out.println(\收费2元\);

} }

//老人卡

public class OlderCard implements Shuaka { @Override

public void shoufei() {

// TODO Auto-generated method stub

System.out.println(\收费1元\);

} }

//学生卡

public class StudentCard implements Shuaka {

@Override

public void shoufei() {

// TODO Auto-generated method stub

System.out.println(\收费0.6元\);

} }

//刷卡机

public class Shuakamch { void useCard(Shuaka c){ c.shoufei(); }

}

//测试类

public class TestShuka {

public static void main(String[] args) { // TODO Auto-generated method stub Shuaka ac=new AdultCard(); Shuaka oc=new OlderCard(); Shuaka sc=new StudentCard(); Shuakamch skj=new Shuakamch(); skj.useCard(ac); skj.useCard(oc); skj.useCard(sc); } }

2、按照要求实现以下类:

1)编写圆、长方形和三角形的实体类。 2)编写定义计算面积和周长的接口。

3)编写圆、长方形和三角形的业务类来实现接口。

4)编写业务类,计算以圆、长方形和三角形为底面,任意长度为高的立体的体积和表面积。

5)编写测试类,分别计算以半径为2的圆、长宽分别为4,3的长方形,三边分别为5,4,3的三角形为底面,高为5的立体的体积和表面积。

//实体类省略,自己编写 //接口

public interface ShapeCom { double getArea();

double getPerimeter();

}

//圆的业务类

public class CircleCom implements ShapeCom{ private Circle c;

public CircleCom(Circle c){ this.c=c; }

public double getArea(){

return c.getRadius()*Math.PI*c.getRadius(); }

public double getPerimeter(){

return 2*Math.PI*c.getRadius(); }

}

//三角形的业务类

public class TriangleCom implements ShapeCom{ private Triangle t;

public TriangleCom(Triangle t){ this.t=t; }

public double getArea(){ double s,res;

s=(t.getA()+t.getB()+t.getC())/2;

res=Math.sqrt(s*(s-t.getA())*(s-t.getB())*(s-t.getC())); return res; }

public double getPerimeter(){

return t.getA()+t.getB()+t.getC(); }

}

//长方形的业务类

public class RectangleCom implements ShapeCom{ private Rectangle r;

public RectangleCom(Rectangle r){ this.r=r; }

public double getArea(){

return r.getChang()*r.getKuan(); }

public double getPerimeter(){

return 2*(r.getChang()+r.getKuan()); } }

//立体的业务类

public class Liti { private ShapeCom s; private double height;

public Liti(ShapeCom s,double height){