0Pricing
Android Academy · レッスン

クラスとオブジェクト

プロパティとメソッドを持つクラスを定義し、コンストラクターを使い、継承とインターフェースを理解して、Kotlinらしいオブジェクト指向コードを書きます。

「クラスとオブジェクト」はCoddyKit上の無料Android Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAndroid Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Android Academyコースには全4レッスンが含まれています。

クラスとは

クラスは、オブジェクトを作成するための設計図です。関連するデータ(プロパティ)と振る舞い(関数)をまとめて定義します。

  • class Dog — 設計図を定義します
  • val myDog = Dog() — インスタンス(オブジェクト)を作成します

例として、名前、年齢、メールアドレスを保持するUserクラスがあります。

クラスの定義

Kotlinのクラスでは、簡潔なプライマリコンストラクター構文を使えます。

class User(val name: String, var age: Int) {
    fun greet(): String {
        return "Hi, I'm $name and I'm $age years old."
    }
}

fun main() {
    val user = User("Alice", 28)
    println(user.name)     // Alice
    println(user.age)      // 28
    user.age = 29          // var can be changed
    println(user.greet())
}

データクラス

データクラスは、データの保持に適しています。dataキーワードを追加すると、Kotlinが次の機能を自動生成します。

  • equals() / hashCode() — 値に基づいて比較します
  • toString() — 人が読みやすい形式で出力します
  • copy() — 変更したコピーを作成します

データクラスの例

データクラスは、モデルオブジェクトを表現するときに特に便利です。

data class Product(val id: Int, val name: String, val price: Double)

fun main() {
    val p1 = Product(1, "Laptop", 999.99)
    val p2 = p1.copy(price = 899.99) // new copy with changed price

    println(p1)           // Product(id=1, name=Laptop, price=999.99)
    println(p2)           // Product(id=1, name=Laptop, price=899.99)
    println(p1 == p2)     // false (different price)
}

コンパニオンオブジェクト

コンパニオンオブジェクトは、インスタンスではなくクラス自体に属するメンバーを保持します。Javaのstaticに似た機能です。

クラス名を使ってアクセスします:User.create()

コンパニオンオブジェクトの例

ファクトリーメソッドや定数には、コンパニオンオブジェクトを使います。

class Counter {
    var count = 0

    fun increment() { count++ }

    companion object {
        const val MAX = 100

        fun create(): Counter = Counter()
    }
}

fun main() {
    val c = Counter.create()
    c.increment()
    c.increment()
    println(c.count)        // 2
    println(Counter.MAX)    // 100
}

継承

Kotlinのクラスはデフォルトでfinalです(拡張できません)。継承を許可するには、クラスにopenを付けます。

  • open class Animal — 拡張できます
  • class Dog : Animal() — Animalを拡張します
  • override fun sound() — 親クラスの関数をオーバーライドします

継承の例

簡単なクラス階層を作成します。

open class Shape {
    open fun area(): Double = 0.0
}

class Circle(val radius: Double) : Shape() {
    override fun area(): Double = 3.14159 * radius * radius
}

class Rectangle(val w: Double, val h: Double) : Shape() {
    override fun area(): Double = w * h
}

fun main() {
    val shapes: List<Shape> = listOf(
        Circle(5.0),
        Rectangle(4.0, 3.0)
    )
    for (s in shapes) println("Area: ${s.area()}")
}

object宣言

object宣言を使うとシングルトンが作成されます。シングルトンとはインスタンスが1つだけ存在するクラスで、最初にアクセスされたときに遅延生成されます。

ユーティリティ、マネージャーなど、インスタンスを1つだけにしたいものに使います。

クイックチェック

Kotlinのdata classが自動的に提供する機能はどれですか?

まとめ:クラスとオブジェクト

Kotlinのオブジェクト指向プログラミングの基本要素を学びました。

  • プライマリコンストラクターとメンバー関数を持つクラス
  • data class — equals、toString、copyを自動生成します
  • companion object — クラスレベルの(staticな)メンバー
  • 継承のためのopenクラスとoverride
  • シングルトンのためのobject宣言

これで、本格的なAndroidアプリを作成する準備が整いました。

よくある質問

「クラスとオブジェクト」レッスンは無料ですか?

はい。「クラスとオブジェクト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Android Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Android Academyコースには全4レッスンが含まれています。

「クラスとオブジェクト」で何を学びますか?

プロパティとメソッドを持つクラスを定義し、コンストラクターを使い、継承とインターフェースを理解して、Kotlinらしいオブジェクト指向コードを書きます。 ブラウザで直接実行するハンズオンコードでAndroid Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Android Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAndroid Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「クラスとオブジェクト」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAndroid Academyレッスンでコードを書いて実行できますか?

はい。すべてのAndroid Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Null安全
  2. クラスとオブジェクト
  3. データクラスとsealedクラス
  4. 拡張関数と高階関数
← Android Academyに戻る