Java インターフェースのサンプル

Javaのインターフェースのサンプルです。

目次

インターフェースの宣言

interface  インターフェース名  {
  定数
  抽象メソッド
}
  • インターフェースの宣言は、「interface」を記述します。
  • 定数と抽象メソッドを記述できます。
  • 以前はメソッド(抽象メソッド)の内容の記述は不可でしたが、Java8からdefaultをつけることでメソッドの内容を記述できるようになりました。

インターフェースを実装したクラス

class  クラス名  implements  インターフェース名{
}
  • インターフェースを継承してクラスを定義することを「インターフェースを実装する」と言います。
  • インターフェースを実装するクラスには、「implements」を記述します。
  • インターフェースを実装したクラスはインターフェースで宣言されている抽象メソッドをオーバーライドする必要があります。
  • 1つのクラスに複数のインターフェースを実装することができます。その場合カンマで区切って記述します。
  • インスタンスの生成でインターフェースの型を指定することも可能です。その場合、指定したインターフェースにあるメソッドのみ使用できます。

インターフェースのサンプル

インターフェースのサンプルです。

3-6行目は、インターフェースです。
4行目の変数は定数です。public static finalがついているとみなされます。
5行目は、抽象メソッドです。
7行目は3行目のインターフェースを実装しています。
9行目は5行目の抽象メソッドをオーバーライドしています。

package test1;

interface InterfaceA {
	int cnt1 = 3;
	void printA();
} 
class Class1 implements InterfaceA{
	@Override
	public void printA() {
		System.out.println(cnt1);
	}
}
public class Test1 {
	public static void main(String[] args) {
		Class1 c1 = new Class1();
		c1.printA(); // 3
	}
}

複数のインターフェースを実装する

複数のインターフェースを実装するサンプルです。
1つのクラスに複数のインターフェースを実装することができます。

13行目は5行目と9行目ののインターフェースを実装しています。

package test1;

interface InterfaceA {
	int cnt1 = 3;
	void printA();
}
interface InterfaceB {
	void printB(int cnt2);
}
class Class1 implements InterfaceA, InterfaceB {
	@Override
	public void printA() {
		System.out.println(cnt1);
	}
	public void printB(int c) {
		System.out.println(c + 5);
	}
}
public class Test1 {
	public static void main(String[] args) {
		Class1 c1 = new Class1();
		c1.printA(); // 3
		c1.printB(2); // 7
	}
}

インスタンスの生成でインターフェースの型を指定する

インスタンスの生成でインターフェースの型を指定するサンプルです。
指定したインターフェースにあるメソッドのみ使用できます。

10行目のクラスは、3,7行目の2つインターフェースを実装しています。
22行目は、インターフェース(InterfaceA)の型を指定しています。24行目のprintBメソッドは、InterfaceAにないので実行できません。
26行目は、インターフェース(InterfaceB)の型を指定しています。27行目のprintAメソッドは、InterfaceBにないので実行できません。

package test1;

interface InterfaceA {
	int cnt1 = 3;
	void printA();
}
interface InterfaceB {
	void printB(int cnt2);
}
class Class1 implements InterfaceA, InterfaceB {
	@Override
	public void printA() {
		System.out.println(cnt1);
	}
	public void printB(int c) {
		System.out.println(c + 5);
	}
}
public class Test1 {
	public static void main(String[] args) {

		InterfaceA c2 = new Class1();
		c2.printA(); // 3
		// c2.printB(); //コンパイルエラー
 
		InterfaceB c3 = new Class1();
		// c3.printA(); //コンパイルエラー
		c3.printB(6); // 11
	}
}

クラスの継承とインターフェースの実装を行う

クラスの継承とインターフェースの実装を行うサンプルです。

12行目は、クラスを継承し、インターフェースを実装しています。

package test1;

interface InterfaceA {
	int cnt1 = 3;
	void printA();
}
class ClassTest{
}
class Class1 extends ClassTest implements InterfaceA{
	@Override
	public void printA() {
		System.out.println(cnt1);
	}
}
public class Test1 {
	public static void main(String[] args) {
		Class1 c1 = new Class1();
		c1.printA(); // 3
	}
}

インターフェースのメソッドに処理内容を記述する(default)

インターフェースのメソッドに処理内容を記述するサンプルです。

5行目は、メソッド名の前にdefaultをつけています。
6行目は、メソッドの処理内容です。
9,10行目はインターフェースを実装したクラスですがインターフェースのメソッドをオーバーライドしていません。
14行目は、メソッドを実行することができます。

package test1;

interface InterfaceA {
	int cnt1 = 3;
	default void printA() {
		System.out.println("テスト1");
	};
}
class Class1 implements InterfaceA{
}
public class Test1 {
	public static void main(String[] args) {
		Class1 c1 = new Class1();
		c1.printA(); // テスト1
	}
}

関連の記事

Java クラスのサンプル
Java コンストラクタのサンプル
Java クラスの変数のサンプル(メンバー変数/ローカル変数)
Java 変数の型変換のサンプル(基本型と参照型)
Java インスタンスの型を調べるサンプル(instanceof)
Java クラスのthisのサンプル
Java 抽象メソッドと抽象クラスのサンプル(abstract)
Java シングルトンのサンプル
Java ポリモフィズムのサンプル
Java staticメソッドとstatic変数のサンプル

 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る