
はい、のこり100ページ前後に・・・・
長かったねwww
で、今回は 抽象クラス・インタフェース についてやっていきます。
抽象クラスは、その時使うスーパークラスを作成するためのクラス。
普通のクラスとはすこし書き方が違います
違いは、オーバライドしてほしいメソッドの書き方で、抽象メソッドという形式を使います。
挨拶を汎用するクラスを見ていきます。
package sample19_01;
public abstract class Greeting {
public abstract String language();
public abstract String message();
}abstract は各一に注意が必要です。
メソッドの戻り値よりも先に書かないとコンパイルエラーになるので・・・
抽象クラスには次の2つの特徴があります
♦抽象クラスの特徴
①普通のクラスとの違いは、 abstract を付けることだけ。
②インスタンスを作れない。
一般に、ソフトウェア世界で インターフェースとは、
ソフトウェア・インタフェースは API (Application Programming Interface)と呼ばれています。
続いて、インタフェースのつくりかたについてやっていきます。
package sample19_02;
public interface Responsible {
String info();
String exp();
}Java言語ではResponsibleインタフェースそのまま書くことができないので
interfaceというキーワードを使って定義します。
Responsibleインタフェースとは
AI(人工知能)システムがユーザーに対して、その機能や決定過程を倫理的・責任ある形で提示するユーザーインターフェース(UI)/UXデザイン

書き方は上の図のように書きます
省略されてる修飾子は指定されているとみなされているので書かなくてもOK
上の例題では public を使用してますが デフォルトアクセスでもできます。
★インターフェースの書き方
インターフェースは public か デフォルトアクセス のどちらかにする
抽象メソッドには public abstract が省略される
package sample19_02;
public class Member implements Responsible{
private int id;
private String name;
public Member(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public String info() {
return "Member ver1.0";
}
@Override
public String exp() {
return "フィットネスクラブケ";
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
上のプログラムは17章で使用したフィットネスクラブの一般会員を表すクラス
implements キーワードを使い Responsibleインターフェースの実装を宣言
チェック機能が働くのでインタフェースにある抽象メソッドを正しくオーバーライドしないとコンパイルエラーに
重要な部分だけ説明をしておきます。
★インターフェースの定義と実装のパターン
インタフェースはextendsキーワードで他のインターフェースを継承できる
クラス継承と同時にインターフェースの実装を指定できる
複数のインターフェースを同時に実装できる
Java言語の規約ではクラスを作るとクラス名と同じ型が使えるようになる
Responsible型は インタフェース型

コレで参照型のすべての型が出そろいました。
package sample19_03;
public class Exec {
public static void main(String[] args) {
Responsible res = new Member(118, "tanaka");
System.out.println(res.info());
System.out.println(res.exp());
//System.out.println(res.getName());
}
}
package sample19_04;
public class Information {
public static void print(Responsible res){
headder(res);
body(res);
}
public static void headder(Responsible res){
System.out.println(res.info());
}
public static void body(Responsible res){
System.out.println(res.exp());
}
}
package sample19_04;
public class Exec {
public static void main(String[] args) {
Member member = new Member(118, "田中宏");
Member student = new Student(120, "佐藤修ョ", "A223");
Greeting greeting = new Greeting();
Information.print(member);
Information.print(student);
Information.print(greeting);
}
}
文字化けしていてうまく起動しないのでプログラムだけのせておきます。
最後にインターフェースの使い方を
★インターフェースの使い方
①抽象クラスの代替として、多重継承を避ける目的で使う
②特定のインターフェースを実装したクラスを対象とする、
ユーティリティクラスを作るために使う
ここまでご覧いただきありがとうございました。
あと1記事だけど間に合うかな~~~~~~~~~~~
BY マんタ
参考書は__________________________________
川場 隆 Kawaba Takashi
秀和システム
______________________________________










