【Java】抽象メソッドと抽象クラスの使い方

■抽象メソッド

処理内容を記載しないメソッドを抽象メソッドと呼ぶ。

抽象メソッドを定義する場合は、以下のように「abstract」を記載する。

public abstract void 抽象メソッド名();

■抽象クラス

抽象メソッドを持つクラスを抽象クラスと呼ぶ。

抽象クラスを定義する場合は、抽象メソッドと同様に、「abstract」を記載する。

abstract class 抽象クラス名{
	public abstract void 抽象メソッド名();
}

■抽象メソッド・抽象クラスの使い方

抽象クラスは、複数のクラスをまとめる時に使用する。

abstract class 抽象クラス名{
	public abstract void メソッド名();
}

// 抽象クラスを継承するクラス その1
class クラス名1 extends 抽象クラス名{
	public void メソッド() {
		処理を書く
	}
}

// 抽象クラスを継承するクラス その2
class クラス名2 extends 抽象クラス名{
	public void メソッド() {
		処理を書く
	}
}


public class メインクラス{
	public static void main(String[] args) {
		// 抽象クラスを配列でインスタンス
		抽象クラス名[] 配列名 = new 抽象クラス名[2];
		
		// 配列にクラスをセットする
		配列名[0] = new クラス名1();
		配列名[1] = new クラス名2();
	}
}

抽象クラスを配列としてインスタンスし、継承したクラスを配列の要素としてインスタンスすることができる。

■今回実装するプログラムの仕様

それぞれの方角(東西南北)に向かってください。というメッセージを表示する。

▼サンプルコード

// 方角を表示する抽象クラス
abstract class Direction{
	// 方角を出力する抽象メソッド
	public abstract void show_direction();
}

// 北を表すクラス
class North extends Direction{
	// 北を出力するメソッド
	public void show_direction() {
		System.out.println("北に向かってください");
	}
}

//南を表すクラス
class South extends Direction{
	// 南を出力するメソッド
	public void show_direction() {
		System.out.println("南に向かってください");
	}
}

//東を表すクラス
class East extends Direction{
	// 東を出力するメソッド
	public void show_direction() {
		System.out.println("東に向かってください");
	}
}

//西を表すクラス
class West extends Direction{
	// 西を出力するメソッド
	public void show_direction() {
		System.out.println("西に向かってください");
	}
}

public class Sample {
	public static void main(String[] args) {
		// 方角を表示する抽象クラスをインスタンス(配列で)
		Direction[] d = new Direction[4];
		
		// 配列に東西南北をセットする
		d[0] = new East();
		d[1] = new West();
		d[2] = new South();
		d[3] = new North();
		
		// それぞれのメソッドを呼び出す
		for(int i = 0; i < d.length; i++) {
			d[i].show_direction();
		}
		
	}
	
}

▼実行結果

東に向かってください
西に向かってください
南に向かってください
北に向かってください
タイトルとURLをコピーしました