Java 抽象メソッドと抽象クラスのサンプル(abstract)

Javaの抽象メソッドと抽象クラスのサンプルです。

目次

抽象メソッドと抽象クラス

abstract  class  クラス名 {
  abstract 戻り値 メソッド名(引数){
   }
}
  • abstractというキーワードを指定します。
  • 抽象メソッドは、メソッドの定義はしますが、メソッドの処理内容は記述しません。
  • 抽象クラスを継承したクラスでメソッドの処理内容を記述します。
    →抽象クラスを継承する場合はextendsを使用します。
    →抽象メソッドをオーバーライドする必要があります。
    →一度に継承できる抽象クラスは1つのみです。
  • 抽象メソッドが1つでもあると抽象クラスになります。
    →クラスの前にもabstractをつけることが必須になります。
  • インスタンスの生成で抽象クラスの型を指定することも可能です。その場合、指定した抽象クラスのメソッドのみ使用できます。
  • 抽象クラス自体はインスタンス化することはできません。

コード

サンプルのコードです。
3行目はクラスの前にabstractがついています。抽象クラスです。
4行目はメソッドの前にabstractがついています。抽象メソッドです。
6行目は抽象クラスをextendsで継承しています。
8行目は4行目の抽象メソッドをオーバーライドしています。

package test1;

abstract class AbstractTest {
	abstract void print1();
}
class TestA extends AbstractTest {
	@Override
	public void print1() {
		System.out.println("1");
	}
}
public class Test1 {
	public static void main(String[] args) {
		TestA ta = new TestA();
		ta.print1(); // 1
	}
}

変数の型が抽象クラスの場合

変数の型が抽象クラスの場合のサンプルです。
指定した抽象クラスにあるメソッドのみ使用できます。

17行目の変数の型は、抽象クラス(AbstractTest)です。
18行目のprint1メソッドは実行できますが、19行目の抽象クラスにないprint2メソッドは実行できません。

package test1;

abstract class AbstractTest {
	abstract void print1();
}
class TestA extends AbstractTest {
	@Override
	public void print1() {
		System.out.println("1");
	}
	public void print2() {
		System.out.println("2");
	}
}
public class Test1 {
	public static void main(String[] args) {
		AbstractTest tab = new TestA();
		tab.print1(); // 1
//		tab.print2();
	}
}

関連の記事

Java クラスのサンプル
Java コンストラクタのサンプル
Java クラスの変数のサンプル(メンバー変数/ローカル変数)
Java 変数の型変換のサンプル(基本型と参照型)
Java インスタンスの型を調べるサンプル(instanceof)
Java クラスのthisのサンプル
Java インターフェースのサンプル
Java シングルトンのサンプル
Java ポリモフィズムのサンプル
Java staticメソッドとstatic変数のサンプル

 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る