クラスとオブジェクト
プロパティとメソッドを持つクラスを定義し、コンストラクターを使い、継承とインターフェースを理解して、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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Null安全
- クラスとオブジェクト
- データクラスとsealedクラス
- 拡張関数と高階関数