Kotlinのオブジェクト指向プログラミング(OOP)における「クラス」は、データとその振る舞い(メソッド)をひとまとめにした設計図としての役割を果たします。KotlinはJavaに似た構文を持ちつつ、より簡潔で安全な記述が可能です。
1. クラスの基本構文
上記はPersonというクラスで、nameとageというプロパティ、およびgreetというメソッドを持ちます。
2. コンストラクタ
Kotlinでは**主コンストラクタ(primary constructor)**をクラス宣言の横に記述できます。
この例では、nameは読み取り専用(val)、ageは読み書き可能(var)なプロパティです。
3. 初期化ブロック(init)
init)主コンストラクタに続けて、初期化処理を行いたい場合はinitブロックを使用します。
4. クラスのインスタンス化(オブジェクト生成)
newキーワードは不要です。
5. メソッドの定義
クラス内で関数(メソッド)を定義することで、インスタンスに動作を持たせます。
6. プロパティのカスタムゲッター/セッター
プロパティにはカスタムなgetter/setterを定義できます。
7. デフォルト値と名前付き引数
Kotlinではコンストラクタにデフォルト値を設定でき、名前付き引数も使えます。
8. クラスの種類
Kotlinには以下のようなクラスがあります。
| クラスの種類 | 説明 |
|---|---|
| 通常クラス | 最も基本的なクラス |
| data class | データ保持に特化。equals, hashCode, toString など自動生成 |
| sealed class | 継承を制限し、パターンマッチに便利 |
| abstract class | 抽象メソッドを含み、直接インスタンス化不可 |
| enum class | 列挙型の定義に使用 |
9. クラスとオブジェクト指向の4要素との関係
| 要素 | 説明 |
|---|---|
| カプセル化 | プロパティやメソッドをクラスでまとめ、アクセス修飾子で制御 |
| 継承 | open修飾子を使ってクラスの継承が可能 |
| 多態性 | メソッドのオーバーライドやインターフェースの実装により実現 |
| 抽象化 | 抽象クラスやインターフェースで実装を隠す設計が可能 |
生成日:2025/05/04