■ インターフェースで定義できるもの
* メソッド(定義のみ)
* 定数 // ★ C#との違い ★
* デフォルト実装 (from Java8) // ★ C#との違い ★
補足
* インターフェイスに定義した変数は、「public static final」が付いているものとみなされる
(メンバ変数みたいだが、定数になる)
■ 構文
インターフェース作成
public interface 【インターフェース名】
or
public interface 【インターフェース名】 extends 【スーパーインターフェース名】
インターフェースを継承したクラス
public class 【クラス名】 implements 【インターフェース名】
or
public class 【クラス名】 extends 【スーパークラス名】 implements 【インターフェース名】
■ 応用編
* ジェネリックを利用する
Java のジェネリックについては、以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/32099558.html
インターフェース作成
public interface 【インターフェース名】<【ジェネリック】>
or
public interface 【インターフェース名】<【ジェネリック】> extends 【スーパーインターフェース名】<【ジェネリック】>
例
interface IDbObject<IdDataType> {
IdDataType getId();
void setId(IdDataType id);
// 略
}
public class DbObject implements IDbObject<String> { // DBのIDをString/Long等のように変更できる
// 略
■ サンプル
インターフェース:ISample
public interface ISample {
public static final int CONSTANT_INT = 100;
public String getName();
}
スーパー・インターフェース:ISuperSample
* 「インターフェース:ISample」を継承
public interface ISuperSample extends ISample {
public String CONSTANT_STRING = "This is a sample.";
public String getTitle();
}
* 「インターフェース:ISuperSample」を継承し実装。
public class Sample implements ISuperSample {
public static void main(String[] args) {
Sample sample = new Sample();
System.out.println(sample.getName());
System.out.println(sample.getTitle());
}
@Override
public String getName() {
return "Mike";
}
@Override
public String getTitle() {
return "Title : " + Sample.CONSTANT_STRING + " " + Sample.CONSTANT_INT;
}
}
出力結果
Mike
Title : This is a sample. 100