Javaのインターフェースの使い方とは?多重実現や継承についても紹介

- システム
エンジニア - Javaのインターフェースはどのように使用するのでしょうか。
- プロジェクト
マネージャー - 処理ロジックは書かずに、後からメソッドを実装して使用するために使います。
Javaのインターフェースの使い方とは?
今回は、Javaのインターフェースの使い方について説明します。インターフェースは、処理ロジックは書かずに、後からメソッドを実装して使用するために使います。
ここでは、インターフェースの
・作成
・使い方
・多重実現
・defaultメソッド
・継承
について紹介します。
Javaのインターフェースの使い方に興味のある方はぜひご覧ください。
作成
Javaのインターフェースの作成方法を紹介します。以下のようにメソッドの定義を記述します。
1 2 3 4 5 |
interface MyInterface { void myMethod1(); void myMethod2(); } |
このインターフェースを実装すれば使用できるようになります。
基本的な使い方
Javaのインターフェースの基本的な使い方を紹介します。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// インターフェース interface MyInterface { void myMethod1(); void myMethod2(); } // インターフェースを実装したクラス class MyClass implements MyInterface { public void myMethod1() { System.out.println(""implementation of myMethod1""); } public void myMethod2() { System.out.println(""implementation of myMethod2""); } } // インターフェースを実装したクラスを実行 public class Main { public static void main(String[] args) { MyClass myClass = new MyClass(); myClass.myMethod1(); myClass.myMethod2(); } } |
実行結果は以下のようになります。
1 2 |
implementation of myMethod1 implementation of myMethod2 |
インターフェースを実装したクラスを作成し、それを実行すればよいのです。メソッドの中身は、インターフェースを実装したクラス作成時に実装します。
多重実現
Javaのインターフェースは多重実現できます。インターフェースを複数実装できるということです。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
// インターフェース1 interface MyInterface1 { // インターフェースには変数も定義できる int num1 = 11; String str1 = ""implementation of myMethod1""; void myMethod1(); } // インターフェース2 interface MyInterface2 { int num2 = 22; String str2 = ""implementation of myMethod2""; void myMethod2(); } // 複数のインターフェースを実装したクラス class MyClass implements MyInterface1, MyInterface2 { public void myMethod1() { System.out.println(num1 + num2); System.out.println(str1); } public void myMethod2() { System.out.println(num1 - num2); System.out.println(str2); } } // インターフェースを実装したクラスを実行 public class Main { public static void main(String[] args) { MyClass myClass = new MyClass(); myClass.myMethod1(); myClass.myMethod2(); } } |
実行結果は以下のようになります。
1 2 3 4 |
33 implementation of myMethod1 -11 implementation of myMethod2 |
implements MyInterface1, MyInterface2のように、複数のインターフェースを実装できます。
defaultメソッド
Javaのインターフェースにおける、defaultメソッドについて紹介します。インターフェースは基本的にはメソッドの定義を記述しますが、defaultメソッドはインターフェース内にロジックを実装できます。
インターフェースを実装したクラスでは、必要に応じてオーバーライドします。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
// インターフェース interface MyInterface { String str1 = ""default implementation of myMethod""; default public void myMethod() { System.out.println(str1); } } // インターフェースを実装したクラス class MyClass1 implements MyInterface { // defaultメソッドが使用される } // インターフェースを実装したクラス class MyClass2 implements MyInterface { @Override public void myMethod() { System.out.println(""implementation of myMethod""); } } // インターフェースを実装したクラスを実行 public class Main { public static void main(String[] args) { MyClass1 myClass1 = new MyClass1(); myClass1.myMethod(); MyClass2 myClass2 = new MyClass2(); myClass2.myMethod(); } } |
実行結果は以下のようになります。
1 2 |
default implementation of myMethod implementation of myMethod |
MyClass1ではdefaultメソッドがそのまま使われていることが分かります。
継承
Javaのインターフェースは継承することもできます。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// インターフェース1 interface MyInterface1 { int num1 = 11; String str1 = ""implementation of myMethod1""; void myMethod1(); } // 継承したインターフェース interface MyInterface2 extends MyInterface1 { int num2 = 22; String str2 = ""implementation of myMethod2""; void myMethod2(); } // インターフェースを実装したクラス class MyClass implements MyInterface2 { public void myMethod1() { System.out.println(num1 + num2); System.out.println(str1); } public void myMethod2() { System.out.println(num1 - num2); System.out.println(str2); } } // インターフェースを実装したクラスを実行 public class Main { public static void main(String[] args) { MyClass myClass = new MyClass(); myClass.myMethod1(); myClass.myMethod2(); } } |
実行結果は以下のようになります。
1 2 3 4 |
33 implementation of myMethod1 -11 implementation of myMethod2 |
- システム
エンジニア - Javaのインターフェースをよく理解できました。
- プロジェクト
マネージャー - Javaのインターフェースの作り方や使い方などが理解できたら、実際にソースコードで指定してみましょう。
まとめ
いかがでしたでしょうか。Javaのインターフェースは、処理ロジックは書かずに、後からメソッドを実装して使用するために使います。Javaのインターフェースの作り方、使い方、多重実現、defaultメソッド、継承について説明しました。
ぜひご自身でJavaのソースコードを書いて、理解を深めてください。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅)販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅)生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅)社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅)金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅)大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)