java 接口如何定义和使用 用接口实现多态

发布时间:2025-04-30      访问量:28
在 Java 里,接口属于一种抽象类型,它规定了一组方法的签名,却不包含方法的具体实现。接口可用于达成多态性,也就是允许不同的类以不同的方式实现相同的方法。以下会详细介绍 Java 接口的定义和使用。

接口的定义
接口使用 `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()` 方法时,会根据实际引用的对象类型来调用相应的实现。

通过接口实现多态,能让代码更具灵活性和可扩展性,便于维护和扩展新的功能。
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念