亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

精通 Java 接口:概念、实现与最佳实践

Java 接口详解

Java 接口定义实现类必须遵守的契约。它们实现抽象、多重继承,并促进清晰、模块化的架构。

定义接口

接口是完全抽象的类型。其所有方法隐式为 public abstract,所有字段隐式为 public static final。使用 interface 关键字声明:

interface Language { void getType(); void getVersion(); }

此处 Language 接口包含两个抽象方法。

实现接口

接口不能实例化。类使用 implements 关键字实现接口,并为所有抽象方法提供具体方法体。

示例 1:多边形接口

interface Polygon { void getArea(int length, int breadth); } class Rectangle implements Polygon { @Override public void getArea(int length, int breadth) { System.out.println("The area of the rectangle is " + (length * breadth)); } } class Main { public static void main(String[] args) { Rectangle r = new Rectangle(); r.getArea(5, 6); } }

输出:

The area of the rectangle is 30

示例 2:语言接口

interface Language { void getName(String name); } class ProgrammingLanguage implements Language { @Override public void getName(String name) { System.out.println("Programming Language: " + name); } } class Main { public static void main(String[] args) { ProgrammingLanguage lang = new ProgrammingLanguage(); lang.getName("Java"); } }

输出:

Programming Language: Java

实现多个接口

一个类可实现多个接口:

interface A { /* members */ } interface B { /* members */ } class C implements A, B { /* implementations */ }

扩展接口

接口可使用 extends 扩展其他接口:

interface Line { /* members */ } interface Polygon extends Line { /* members */ }

实现 Polygon 的类必须同时提供 Line 和 Polygon 成员的方法。

扩展多个接口

interface A { /* ... */ } interface B { /* ... */ } interface C extends A, B { /* ... */ }

为何使用接口?

隐式常量示例:

interface Language { String TYPE = "programming language"; // 隐式 public static final void getName(); // 隐式 public }

默认方法(Java 8+)

Java 8 引入 default 方法,允许接口包含具体方法体:

default void getSides() { System.out.println("I can get sides of a polygon."); }

默认方法使接口新增方法时无需破坏现有实现,实现向后兼容。

示例:默认方法用法

interface Polygon { void getArea(); default void getSides() { System.out.println("I can get sides of a polygon."); } } class Rectangle implements Polygon { @Override public void getArea() { int length = 6; int breadth = 5; int area = length * breadth; System.out.println("The area of the rectangle is " + area); } @Override public void getSides() { System.out.println("I have 4 sides."); } } class Square implements Polygon { @Override public void getArea() { int length = 5; int area = length * length; System.out.println("The area of the square is " + area); } } class Main { public static void main(String[] args) { Rectangle r = new Rectangle(); r.getArea(); r.getSides(); Square s = new Square(); s.getArea(); s.getSides(); } }

输出:

The area of the rectangle is 30 I have 4 sides. The area of the square is 25 I can get sides of a polygon.

静态与私有方法(Java 9+)

接口现可包含 static 方法,通过接口名调用:

interface Polygon { static void helper() { /* ... */ } } Polygon.helper();

私有方法为其他接口方法提供内部工具,保证封装性。

实战示例:多边形计算

import java.lang.Math; interface Polygon { void getArea(); default void getPerimeter(int... sides) { int perimeter = 0; for (int side : sides) perimeter += side; System.out.println("Perimeter: " + perimeter); } } class Triangle implements Polygon { private final int a, b, c; private double area; Triangle(int a, int b, int c) { this.a = a; this.b = b; this.c = c; } @Override public void getArea() { double s = (a + b + c) / 2.0; area = Math.sqrt(s * (s - a) * (s - b) * (s - c)); System.out.println("Area: " + area); } } class Main { public static void main(String[] args) { Triangle t = new Triangle(2, 3, 4); t.getArea(); t.getPerimeter(2, 3, 4); } }

输出:

Area: 2.9047375096555625 Perimeter: 9

本例中,Polygon 接口提供可复用的 getPerimeter 方法,各形状实现各自的面积计算。

java

  1. 掌握 C# 接口:定义、实现与实战场景全解析
  2. C# 接口完全指南:定义契约、实现多态与解耦设计
  3. 精通 Java 运算符:类型、语法与实战示例
  4. Java 注释:类型、用法与最佳实践
  5. 精通 Java if…else:控制流全解析
  6. 精通 Java Try-With-Resources:自动资源管理详解
  7. Java 注解详解:类型、放置位置与实战示例
  8. 掌握 Java NavigableSet 接口:导航、排序与实战示例
  9. 掌握 Java Lambda 表达式:从基础到 Stream API 实战
  10. Java 接口 vs 抽象类:如何选择合适的抽象方式
  11. Java 接口全解析:定义契约、默认方法、多实现与标记接口
  12. Java 9 接口私有方法:增强封装与代码复用