Javaの抽象クラスと抽象メソッドの基本と実装例
はい、Javaでは抽象クラスや抽象メソッドを簡単に作成することができます。本記事では、abstractキーワードを使った抽象クラスの定義方法と、その基本的な構造について具体例を交えて解説します。
抽象クラスとは
抽象クラス(abstract class)は、その名の通り「抽象的」な概念を表すためのクラスで、直接インスタンス化することはできません。共通の属性や振る舞いをサブクラスに継承させるための設計図として活用されます。
抽象クラスを作成する方法は非常にシンプルで、クラス宣言時に class キーワードの前に abstract キーワードを付けるだけです。
コード例
/* ファイル名 : Employee.java */
public abstract class Employee {
private String name;
private String address;
private int number;
public Employee(String name, String address, int number) {
System.out.println("Constructing an Employee");
this.name = name;
this.address = address;
this.number = number;
}
public double computePay() {
System.out.println("Inside Employee computePay");
return 0.0;
}
public void mailCheck() {
System.out.println("Mailing a check to " + this.name + " " + this.address);
}
public String toString() {
return name + " " + address + " " + number;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public void setAddress(String newAddress) {
address = newAddress;
}
public int getNumber() {
return number;
}
}コードの解説
上記のEmployeeクラスを見ると、抽象メソッドを除けば、その構造は通常のJavaクラスとまったく同じであることがわかります。クラス自体は抽象化されていますが、それでも3つのフィールド(name、address、number)、7つのメソッド、そして1つのコンストラクタを持っています。
抽象クラスを使用する際のポイント
- 抽象クラスは
newキーワードによる直接のインスタンス化ができません。必ずサブクラスに継承して使用します。 - 抽象メソッドを1つでも持つクラスは、必ず抽象クラスとして宣言する必要があります。
- 抽象クラスには、上記の例のように具体的な実装を持つメソッドやコンストラクタを含めることができます。
抽象クラスを適切に活用することで、コードの再利用性が高まり、オブジェクト指向設計の一貫性を保ちながら柔軟なプログラムを構築できます。
-
Javaのパッケージとは?基本概念から独自パッケージの作り方まで徹底解説
Javaのパッケージとは Javaにおけるパッケージ(Package)は、名前の衝突(ネーミングコンフリクト)を防ぎ、クラスへのアクセスを制御し、クラス・インターフェース・列挙型・アノテーションの検索や利用を容易にするために使用される重要な仕組みです。 パッケージとは、関連する型(クラス、インターフェース、列挙型、アノテーション)をひとまとめにグループ化したものであり、アクセス保護と名前空間の管理を提供します。 Javaに標準で用意されている主なパッケージ Javaには、あらかじめ便利なパッケージが数多く用意されています。代表的なものとして以下が挙げられます。 java.lang — Ja
-
JavaのtoString()メソッドをオーバーライドする目的とは?意味と実装例を解説
JavaにおけるtoString()メソッドとは、どのような役割を持つメソッドなのでしょうか? toString()は、クラスのオブジェクトを文字列(String)として表現したい場合に使用するメソッドです。このメソッドを呼び出すと、オブジェクトの内容をテキスト形式で返してくれます。 実は、オブジェクトをSystem.out.println()などで出力するとき、Javaコンパイラは自動的にそのオブジェクトのtoString()メソッドを呼び出します。つまり、toString()を適切にオーバーライドしておけば、オブジェクトの中身がわかりやすい形で出力されるようになります。 それでは、具体的な