Java 接口方法
概述
在面向对象的编程中,接口(Interface)是一种重要的概念。接口定义了一组方法的集合,但没有实现这些方法的具体代码。它可以看作是一种契约,规定了类必须提供的方法。接口使得不同的类可以通过实现接口来达到统一的目的,提供了一种多态的方式。
在 Java 中,接口可以被类实现(implements)或者其他接口继承(extends)。类实现接口时,必须实现接口中定义的所有方法。接口继承接口时,子接口继承了父接口的所有方法,可以进一步扩展方法。
本文将介绍 Java 中接口方法的定义与使用,并给出代码示例加以说明。
接口方法的定义
接口方法定义时不需要使用 public
或者 private
等修饰符,因为接口中的方法默认为 public
,并且不允许使用 private
。接口方法的定义与普通方法类似,只有方法名、参数列表和返回类型,没有方法体。
下面是一个接口 Shape
的定义,其中包含了两个方法 getArea
和 getPerimeter
:
public interface Shape {
double getArea();
double getPerimeter();
}
在这个接口中,getArea
方法和 getPerimeter
方法没有具体的实现。任何实现了 Shape
接口的类都必须实现这两个方法。
接口的实现
要实现一个接口,需要使用 implements
关键字。一个类可以实现多个接口,用逗号分隔。实现接口时,必须实现接口中定义的所有方法。
下面是一个实现了 Shape
接口的类 Rectangle
的示例:
public class Rectangle implements Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public double getArea() {
return width * height;
}
public double getPerimeter() {
return 2 * (width + height);
}
}
在 Rectangle
类中,通过 implements Shape
表示该类实现了 Shape
接口。并且必须实现 Shape
接口中定义的 getArea
和 getPerimeter
方法。
接口的继承
接口可以继承其他接口,用 extends
关键字。子接口继承了父接口的所有方法,并可以进一步扩展方法。
下面是一个继承了 Shape
接口的子接口 Resizable
的定义,新增了一个方法 resize
:
public interface Resizable extends Shape {
void resize(double ratio);
}
在这个子接口中,除了继承了 Shape
接口的 getArea
和 getPerimeter
方法,还新增了一个 resize
方法。
使用接口
在实际的代码中,我们可以通过接口来实现多态。即使用接口类型的变量来引用具体的实现类的对象,从而实现统一的调用。
下面是一个使用接口的示例:
public class Main {
public static void main(String[] args) {
Shape shape = new Rectangle(5, 3);
System.out.println("Area: " + shape.getArea());
System.out.println("Perimeter: " + shape.getPerimeter());
Resizable resizable = (Resizable) shape;
resizable.resize(0.5);
System.out.println("New Area: " + shape.getArea());
System.out.println("New Perimeter: " + shape.getPerimeter());
}
}
在这个示例中,我们首先创建了一个 Rectangle
对象,并将其赋值给一个 Shape
类型的变量 shape
。然后通过 shape
变量调用了 getArea
和 getPerimeter
方法。
接着,我们将 shape
强转为 Resizable
类型,并调用了 resize
方法。实际上,shape
引用的对象仍然是 Rectangle
类型,但是由于 Rectangle
类实现了 Shape
接口和 Resizable
接口,所以可以进行强