イントロダクション
抽象クラスを使って見ようと思います。まずは抽象クラスってなに?と疑問に思う人もいると思うので簡単に説明しますと
抽象クラス
普通のクラスに抽象メソッドを持てるようにしたクラスです。何が違うのか?というと必ず子クラスを作る必要があり、このクラスは、newてきません。
どう使うんだ?と思う人もいるかもですが例えば、
抽象クラスのモンスタークラスを作ったとしましょう。
しかしモンスターの種類はたくさんあります。そして攻撃の方法も多岐にわたります。
こんな時「攻撃」メソッドを抽象メソッドにして子クラスのスライムクラスで、「攻撃」メソッドをオーバライドしてやればモンスターの攻撃でも、スライムの攻撃にすることができます。
下の動画は、抽象メソッドを持つインターフェイスクラスを使って、抽象メソッドのexecuteを実行するけど、処理内容が色々ある処理を実行しました。
やってみた!CommandIF(自作インターフェース)を作る
余計な音が入っています。
インターフェース・クラスの作成方法
/** インターフェースの作成 */ public interface A { // 抽象メソッドを定義します。 public abstract void test01(); // 上と同様 public void test02(); // 引数など書き方は普通のメソッドと一緒 public String test03(int i); }
抽象クラスの作成方法
/** 抽象クラスの作成 */ public abstract class A { // 抽象メソッドはインターフェースと同じ public abstract void test01(); // 通常のメソッドの実装もOK public void test02() { System.out.println("Hello"); } public A() { // コンストラクタ } }
上の抽象クラスは、親クラスとして定義して、こクラスで似た様な処理
なんども同じ処理を呼び出したいときに使用します。
/** 子クラスサンプル */ public B extends A { // 親クラスの抽象メソッドをオーバーライドする必要がある @Override public void test01() { // 親クラスのメソッドを呼び出す test02(); } // そのほかのメソッドなど }
上記の様に親子関係を作成し、「A家」でtest01()の伝統を引き継いでいく・・・
みたいな感じです。
「GOFのデザインパターン」などを見ると参考になると思います。
インターフェースと抽象クラスの違い
インタフェースは、実体のあるメソッドを持てない。抽象クラスは実体のあるメソッドを持てる。
/** 抽象メソッドは実体がない */
public abstract virtualMethod();
/** 実体のあるメソッド */
public void realMethod() {
System.out.println("Real method")l;
}
ポリモーフィズム
ポリモーフィズムは、一つのメソッドでいろいろなデータ型を使えるようにするということです。
具体的には、メソッドの引数にインタフェースを宣言して作成してみましょう。
public void porimo(List<? extends Object> list) {
/// 何かしらの処理
}
自作のCommandIF(インタフェース)を使用したポリモーフィズムの実行動画があります。
関連ページ一覧
<Java Basic>
- Java Basic Level 1 〜Hello Java〜
- Java Basic Level2 〜Arithmetic Calculate〜「四則計算」
- Java Basic Level3 〜About String class〜「Stringクラス」
- Java Basic Level 4〜Boolean〜「TrueとFalse」
- Java Basic Level 5〜If Statement〜「IF文の書き方など」
- Java Basic Summary from Level1 to 5「Level1〜5までの複合技」
- Java Basic Level 6 〜Traning of If statement〜「IF文の練習」
- Java Basic Level8 〜How to use for statement〜「For文の使い方」
- Java Basic Level 8.5 〜Array〜「配列について」
- Java Basic Level 10 〜While statement 〜「While文について」
- Java Basic Swing〜オブジェクト指向〜「オブジェクト指向の考え方1」
- Java Basic Swing Level 2〜オブジェクト指向2〜「同じく、考え方2」
<クラスの種類>
<インターフェース>
<実装サンプル>