Java 之 实验十二 -- 接口
实验十二
接口
练习一 接口的使用
1,定义一个接口Shape,它含有一个抽象方法 double area( )
2,定义一个表示三角形的类Triangle,该类实现接口Shape。此类中有两个分别用于存储三角形底边和高度的private成员变量int width和int height,在该类实现的方法area中计算并返回三角形的面积。
3,定义一个表示矩形的类Rectangle,该类实现接口Shape。此类中有两个分别表示矩形长度和高度度的成员变量int width和int height,在该类实现的方法area中计算并返回矩形的面积。
4,定义一个类ShapeTest,该类中有一个方法如下:
public static void showArea(Shape s){
System.out.println(“area=”+s.area());
}
在ShapeTest类中定义main函数,在main函数中创建Triang类的对象和Rectangle类的对象,并调用方法showArea两次以输出两个对象的面积。
思考:两次调用showArea方法时调用的area方法各是在哪个类中定义的方法?答:三角形调用showArea方法时调用的area方法是Triangle类中定义的方法,而矩形调用showArea方法时调用的area方法是Rectangle类中定义的方法
ShapeTest.java
package J12;
interface Shape{
public double area();
}
class Triangle implements Shape{
private int width;
private int height;
public Triangle(int width, int height) {
this.width = width;
this.height = height;
}
@Override
public double area() {
double area = (width * height ) / 2;
return area;
}
}
class Rectangle implements Shape{
private int width;
private int height;
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
@Override
public double area() {
double area = width * height;
return area;
}
}
public class ShapeTest{
public static void main(String[] args) {
Shape a = new Triangle(10,20);
showArea(a);
Shape b = new Rectangle(10,20);
showArea(b);
}
public static void showArea(Shape s){
System.out.println("area " + s.area());
}
}
练习二
利用接口做参数, 写个计算器,能完成加减乘除运算:
(1)定义一个接口Calculator含有一个方法int computer(int n, int m)。
(2)设计四个类分别实现此接口,完成加减乘除运算。
(3)设计一个类Computer,类中含有方法:public void useCal (Calculator com, int op1, int op2),要求调用computer(),对参数进行运算。
(4)设计一个主类TestCh09_02,调用Computer中的方法computer来完成加减乘除运算。
运行结果:
25+6和为:31
32-12差为:20
15*5乘积为:75
16/2商为:8
TestCh09_02.java
package J12;
interface Calculator{
int compute(int n ,int m);
}
class sum implements Calculator{
@Override
public int compute(int n, int m) {
return n + m;
}
}
class sub implements Calculator{
@Override
public int compute(int n, int m) {
return n - m;
}
}
class mul implements Calculator{
@Override
public int compute(int n, int m) {
return n * m;
}
}
class div implements Calculator{
@Override
public int compute(int n, int m) {
return n / m;
}
}
class Computer{
public void useCal(Calculator com, int op1, int op2){
int result = com.compute(op1,op2);
System.out.println(result);
}
}
public class TestCh09_02 {
public static void main(String[] args) {
Computer a = new Computer();
sum s1 = new sum();
sub s2 = new sub();
mul s3 = new mul();
div s4 = new div();
a.useCal(s1, 25, 6);
a.useCal(s2, 32, 12);
a.useCal(s3, 15, 5);
a.useCal(s4, 16, 2);
}
}

浙公网安备 33010602011771号