工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Javaインターフェース完全ガイド:概念、実装、ベストプラクティス

Javaインターフェース解説

Javaインターフェースは、実装クラスが遵守しなければならない契約を定義します。抽象化、多重継承を可能にし、クリーンでモジュール化されたアーキテクチャを促進します。

インターフェースの定義

インターフェースは完全に抽象的な型です。すべてのメソッドは暗黙的にpublic abstract、すべてのフィールドはpublic static finalです。interfaceキーワードで宣言します:

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

ここでは、Languageは2つの抽象メソッドを含むインターフェースです。

インターフェースの実装

インターフェースはインスタンス化できません。クラスはimplementsキーワードで実装し、すべての抽象メソッドに具象ボディを提供します。

例1:Polygonインターフェース

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:Languageインターフェース

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 { /* メンバ */ } interface B { /* メンバ */ } class C implements A, B { /* 実装 */ }

インターフェースの拡張

インターフェースはextendsで他のインターフェースを拡張できます:

interface Line { /* メンバ */ } interface Polygon extends Line { /* メンバ */ }

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.

StaticとPrivateメソッド(Java 9+)

インターフェースにはstaticメソッドを含められ、インターフェース名で呼び出せます:

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

Privateメソッドは他のインターフェースメソッドの内部ユーティリティを提供し、カプセル化を保証します。

実践例:多角形の計算

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のtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
  6. Javaアノテーション完全ガイド:種類、配置場所、実践例
  7. Java NavigableSetインターフェースをマスター:ナビゲーション、ソート、実践例
  8. Javaラムダ式完全ガイド:基礎からStream APIまで
  9. Java インターフェース vs 抽象クラス:適切な抽象化の選び方
  10. Javaインターフェース完全ガイド: 定義・実装・多重継承・タグインターフェース
  11. Java 9プライベートインターフェースメソッド:カプセル化とコード再利用を強化