0
点赞
收藏
分享

微信扫一扫

java implements 多个接口

前端王祖蓝 2023-07-17 阅读 70

Java中的接口与类

在Java中,接口是一种抽象的数据类型,它定义了一组方法的签名,但没有提供方法的实现。类可以实现一个或多个接口,并提供具体的方法实现。本文将介绍Java中实现多个接口的概念,并通过代码示例进行说明。

接口的定义与实现

在Java中,可以使用interface关键字定义接口。接口中的方法默认是publicabstract的,不需要显式地指定。接口可以包含常量和默认方法的定义。

public interface InterfaceA {
    void methodA(); // 抽象方法

    default void defaultMethodA() {
        System.out.println("This is a default method in InterfaceA");
    }
}

public interface InterfaceB {
    void methodB(); // 抽象方法

    default void defaultMethodB() {
        System.out.println("This is a default method in InterfaceB");
    }
}

接口可以被类实现,使用implements关键字。一个类可以同时实现多个接口,这样类就可以拥有多个接口中定义的方法。

public class MyClass implements InterfaceA, InterfaceB {
    @Override
    public void methodA() {
        System.out.println("Implementing methodA");
    }

    @Override
    public void methodB() {
        System.out.println("Implementing methodB");
    }
}

实现多个接口

当一个类实现多个接口时,需要提供每个接口中定义的方法的具体实现。这些方法可以在类中实现,也可以通过继承其他类或者实现其他接口来继承方法的实现。

public class MyClass extends MyBaseClass implements InterfaceA, InterfaceB {
    @Override
    public void methodA() {
        System.out.println("Implementing methodA");
    }

    @Override
    public void methodB() {
        System.out.println("Implementing methodB");
    }
}

在上述示例中,MyClass类同时继承了MyBaseClass类和实现了InterfaceAInterfaceB接口。由于MyBaseClass已经实现了一个名为methodC的方法,因此MyClass类不需要再提供这个方法的实现。

示例

现在,我们来看一个使用多个接口的实际示例。假设我们有一个图形接口Shape,它定义了计算面积和周长的方法。我们还有两个实现类RectangleCircle,它们分别实现了Shape接口。

public interface Shape {
    double calculateArea();
    double calculatePerimeter();
}

public class Rectangle implements Shape {
    private double length;
    private double width;

    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    @Override
    public double calculateArea() {
        return length * width;
    }

    @Override
    public double calculatePerimeter() {
        return 2 * (length + width);
    }
}

public class Circle implements Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }

    @Override
    public double calculatePerimeter() {
        return 2 * Math.PI * radius;
    }
}

现在,我们可以创建一个Shape类型的数组,并使用RectangleCircle类的实例填充它。然后,我们可以通过迭代数组并调用calculateAreacalculatePerimeter方法来计算每个图形的面积和周长。

public class Main {
    public static void main(String[] args) {
        Shape[] shapes = new Shape[2];
        shapes[0] = new Rectangle(5, 3);
        shapes[1] = new Circle(2);

        for (Shape shape : shapes) {
            System.out.println("Area: " + shape.calculateArea());
            System.out.println("Perimeter: " + shape.calculatePerimeter());
        }
    }
}

运行上述代码,将输出以下结果:

Area: 15.0
Perimeter: 16.0
Area: 12.566370614359172
Perimeter: 12.566370614359172

总结

通过实现多个接口,我们可以为一个类提供多个接口中定义的方法的具体实现。这在Java中是一种常见的实现多态的方式。通过示

举报

相关推荐

0 条评论