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

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

目次

インターフェース

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

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

インターフェースのサンプルです。
10行目は5行目のインターフェースを実装しています。
12行目は7行目の抽象メソッドをオーバーライドしています。

package test1;
/**
 * Java インターフェースのサンプル
 */
interface InterfaceA {
	int cnt1 = 3; //public static finalがついているとみなされる
	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;
/**
 * Java インターフェースのサンプル
 */
interface InterfaceA {
	int cnt1 = 3; //public static finalがついているとみなされる
	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
	}
}

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

インスタンスの生成でインターフェースの型を指定するサンプルです。
指定したインターフェースにあるメソッドのみ使用できます。
13行目のクラスは、5,9行目の2つインターフェースを実装しています。
26行目は、インターフェース(InterfaceA)の型を指定しています。29行目のInterfaceAにないprintBメソッドの実行はできません。
31行目は、インターフェース(InterfaceB)の型を指定しています。33行目のInterfaceBにないprintAメソッドの実行はできません。

package test1;
/**
 * Java インターフェースのサンプル
 */
interface InterfaceA {
	int cnt1 = 3; //public static finalがついているとみなされる
	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
		// InterfaceAにprintBメソッドはないためコンパイルエラーになる
		// c2.printB();
 
		InterfaceB c3 = new Class1();
		// InterfaceBにprintAメソッドはないためコンパイルエラーになる
		// c3.printA(); //
		c3.printB(6); // 11
	}
}

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

クラスの継承とインターフェースの実装を行うサンプルです。
12行目は、クラスを継承し、インターフェースを実装しています。

package test1;
/**
 * Java インターフェースのサンプル
 */
interface InterfaceA {
	int cnt1 = 3; //public static finalがついているとみなされる
	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
	}
}

関連の記事

Java クラスのサンプル
Java コンストラクタのサンプル
Java メンバー変数とローカル変数
Java クラス型の型変換とキャストのサンプル
Java instanceof演算子のサンプル
Java thisのサンプル
Java abstract修飾子のサンプル
Java シングルトンのサンプル
Java ポリモフィズムのサンプル
Java staticメソッドとstatic変数のサンプル



△上に戻る