接口的定义
接口使用 `interface` 关键字来定义,其语法如下:
java
interface InterfaceName {
// 常量声明(默认是 public static final)
dataType CONSTANT_NAME = value;
// 抽象方法声明(默认是 public abstract)
returnType methodName(parameters);
}
示例:
java
interface Shape {
// 常量
double PI = 3.14;
// 抽象方法
double area();
double perimeter();
}
接口的使用
要使用接口,类必须实现(`implements`)该接口,并且要提供接口中所有抽象方法的具体实现。
java
class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double area() {
return PI * radius * radius;
}
@Override
public double perimeter() {
return 2 * PI * radius;
}
}
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 area() {
return length * width;
}
@Override
public double perimeter() {
return 2 * (length + width);
}
}
利用接口实现多态
多态允许你以统一的方式处理不同类型的对象。可以通过接口类型的引用变量来引用实现了该接口的类的对象。
java
public class Main {
public static void main(String[] args) {
// 使用接口类型的引用变量
Shape circle = new Circle(5);
Shape rectangle = new Rectangle(4, 6);
// 调用相同的方法,但实现不同
System.out.println("Circle area: " + circle.area());
System.out.println("Circle perimeter: " + circle.perimeter());
System.out.println("Rectangle area: " + rectangle.area());
System.out.println("Rectangle perimeter: " + rectangle.perimeter());
}
}
代码解释
- **接口定义**:`Shape` 接口定义了两个抽象方法 `area()` 和 `perimeter()`,所有实现该接口的类都要实现这两个方法。
- **类实现接口**:`Circle` 类和 `Rectangle` 类都实现了 `Shape` 接口,并且分别提供了 `area()` 和 `perimeter()` 方法的具体实现。
- **多态的实现**:在 `Main` 类的 `main` 方法中,使用 `Shape` 接口类型的引用变量来引用 `Circle` 和 `Rectangle` 对象。当调用 `area()` 和 `perimeter()` 方法时,会根据实际引用的对象类型来调用相应的实现。
通过接口实现多态,能让代码更具灵活性和可扩展性,便于维护和扩展新的功能。