クラス

Kotlinのオブジェクト指向プログラミング(OOP)における「クラス」は、データとその振る舞い(メソッド)をひとまとめにした設計図としての役割を果たします。KotlinはJavaに似た構文を持ちつつ、より簡潔で安全な記述が可能です。


1. クラスの基本構文

kotlin
class Person { var name: String = "" var age: Int = 0 fun greet() { println("こんにちは、私は$name$age歳です。") } }

上記はPersonというクラスで、nameageというプロパティ、およびgreetというメソッドを持ちます。


2. コンストラクタ

Kotlinでは**主コンストラクタ(primary constructor)**をクラス宣言の横に記述できます。

kotlin
class Person(val name: String, var age: Int)

この例では、nameは読み取り専用(val)、ageは読み書き可能(var)なプロパティです。


3. 初期化ブロック(init

主コンストラクタに続けて、初期化処理を行いたい場合はinitブロックを使用します。

kotlin
class Person(val name: String, var age: Int) { init { println("Personが生成されました:$name, $age歳") } }

4. クラスのインスタンス化(オブジェクト生成)

kotlin
val person = Person("太郎", 20) println(person.name) // 太郎

newキーワードは不要です。


5. メソッドの定義

クラス内で関数(メソッド)を定義することで、インスタンスに動作を持たせます。

kotlin
fun introduce() { println("私は$nameです。$age歳です。") }

6. プロパティのカスタムゲッター/セッター

プロパティにはカスタムなgetter/setterを定義できます。

kotlin
class Person { var age: Int = 0 set(value) { field = if (value >= 0) value else 0 } }

7. デフォルト値と名前付き引数

Kotlinではコンストラクタにデフォルト値を設定でき、名前付き引数も使えます。

kotlin
class Person(val name: String = "名無し", val age: Int = 0) val p = Person(age = 25)

8. クラスの種類

Kotlinには以下のようなクラスがあります。

クラスの種類 説明
通常クラス 最も基本的なクラス
data class データ保持に特化。equals, hashCode, toString など自動生成
sealed class 継承を制限し、パターンマッチに便利
abstract class 抽象メソッドを含み、直接インスタンス化不可
enum class 列挙型の定義に使用

9. クラスとオブジェクト指向の4要素との関係

要素 説明
カプセル化 プロパティやメソッドをクラスでまとめ、アクセス修飾子で制御
継承 open修飾子を使ってクラスの継承が可能
多態性 メソッドのオーバーライドやインターフェースの実装により実現
抽象化 抽象クラスやインターフェースで実装を隠す設計が可能

生成日:2025/05/04