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);
    }
}

End

posted @ 2023-09-18 17:52  Ivan丶ky  阅读(365)  评论(0)    收藏  举报