こんにちは!リンコですピヨ!この記事では自分の勉強の復習もかねて、Kotlinのクラスとプロパティについて勉強するピヨ!
この第17章では、プログラミング言語であるKotlinのクラスとプロパティについて、一緒に勉強していきましょう。
この記事を読めばプログラミング未経験の方も、Kotlin入門レベルのクラスとプロパティについて1つ1つ理解しながら勉強できると思うので、是非最後まで読んで頂ければと思います。
※この記事で出てくる「サンプルコード」は、記述が長く画面からはみ出ている場合がありますが、横にスライドすると表示されるのでご安心ください。
【Kotlin】クラスとは?
Kotlinはオブジェクト指向言語の1つです。
オブジェクト指向言語には「クラス」と「オブジェクト」という概念があることは当サイトの一番最初の記事で説明しています。
ですので、Kotlinにもクラスとオブジェクトの概念があります。
ではKotlinのクラスとは、具体的にどのようなものなのか勉強していきましょう。
※一番最初の記事が気になる方は、以下のリンクから読んでいただけます
Kotlinはオブジェクト指向言語の1つで「クラス」と「オブジェクト」の概念があるピヨ!
クラスは設計図
クラスの例えとしてよく使われるのは「設計図」という説明です。
もっと具体的な言い方をすると、クラスは「変数」や「関数」をひとまとめにしたコードです。
変数や関数をクラス内で一つにまとめることができるので、設計図と例えて解説されることが多いようです。
main関数の外側に記述する
またクラスは、main関数の「{}」の外側に記述します。
main関数の外側にまとめたい変数や関数をクラスにまとめて記述し、main関数内にはクラスの呼び出しのコードを記述するようにします。
こうすることで、Kotlinのコード全体がスッキリしたコードになります。
とはいったものの、あまりイメージが湧かない方もいると思うので、以下で実際に記述の仕方を勉強して理解を深めていきましょう。
クラスは設計図で変数や関数をひとまとめにしたものピヨ!
【Kotlin】クラスの記述のしかた
クラスについてなんとなくわかったところで、実際にクラスの記述の仕方を勉強していきましょう。
クラスの書式
クラスの書式は、以下のようになります。
fun main() { } // main関数の外側に記述 class クラス名 { }
クラス名の前に必ず「class」とつける
上記の書式のように、クラス名の前に「class」と記述する必要があります。
classを記述しておかないと、クラスを定義したと判断されないので注意です。
クラス名の先頭は大文字にする
クラスの名前は任意でつけることができますが、クラス名の先頭は大文字で記述するようにしましょう。
ルール上は小文字でも大丈夫ですが、プログラマーの中では暗黙のルールとして、クラス名の先頭は大文字で記述するようになっています。
クラス名の先頭は大文字にする暗黙のルールがあるピヨ!
実際にクラスを記述してみよう
では実際にクラスを記述してみましょう。
サンプルコード
以下のサンプルコードでは、Rinkoというクラスを定義しています。
fun main() { } class Rinko { }
これでRinkoというクラスが定義されました。ただし中身は空なので、このままコードを実行しても何も表示されることはありません。
クラスを定義することはできましたが、これでは何も意味を持たないクラスですので、意味を持たせるために以下からプロパティを勉強していきます。
【Kotlin】プロパティとは?
プロパティとは何でしょうか?クラスに続いて、プロパティについて勉強していきましょう。
クラス内に記述された変数
プロパティは、クラス内に記述された変数のことを指します。
クラス内にある変数のことを「プロパティ」とも呼びますし「プロパティ変数」とも呼びます。
どちらでも間違いではないですが、この記事ではプロパティと統一するようにします。
クラスの「{}」内に記述する
変数や関数はクラスの{}内に記述することで、1つのまとまりとして扱われるようになります。
クラスの{}外に変数や関数を記述してしまうと、そのクラスとは全く関係のない変数や関数になるので、必ずクラスの{}内に記述するようにしましょう。
クラス内にある変数のことをプロパティというピヨ!
【Kotlin】クラス内へのプロパティの記述のしかた
では実際にプロパティの記述の仕方を勉強していきましょう。
サンプルコード
以下のサンプルコードでは、リンコに自己紹介をさせるRinkoというクラスを定義しています。
class Rinko { var name = "" var age = 0 fun greet() { println("こんにちは、私の名前は${name}です。年齢は${age}です。") } }
これでプロパティや関数がまとまったRinkoというクラスを定義したことになりますが、プロパティnameもプロパティageも初期値は空や0の状態です。
また現状では設計図が出来上がっただけなので、プログラムを実行しても何も表示されません。
クラスという設計図をもとに、実体を製造する必要があります。ちなみにこの実体が「オブジェクト」というものになり、設計図から実体を作ることを「オブジェクトを生成する」または「クラスをインスタンス化する」と言います。
「オブジェクトを生成」も「インスタンス化」も同じ意味になります。
このままだとプログラムを実行しても意味ないピヨ!
【Kotlin】クラスの呼び出し方
main関数からクラスを呼び出すことをインスタンス化するというのですが、以下からはインスタンス化するためのクラスの呼び出し方を勉強していきます。
またクラスを呼び出す際に、リンコに名前や年齢を与えて、意味のあるコードにしていきます。
クラスを呼び出す際の書式
クラスを呼び出す際の書式は以下のようになります。
fun main() { val インスタンス名 = クラス名() インスタンス名.プロパティ名 = "値" インスタンス名.プロパティ名 = 値 インスタンス名.関数名() }
クラスを呼び出す際、valの後に任意の変数名を記述する
クラスを呼び出す(インスタンス化)際は、valの後にわかりやすい任意のインスタンス名を記述し「=」の右側に呼び出したいクラス名を記述します。
「=」の右側に記述されているクラスの内容を、左側のインスタンスに代入するイメージですね。
これでインスタンス化が完了となります。
「.」を使ってプロパティに値を代入する
インスタンス化した行よりも下の記述は、プロパティに値を代入していることを表しています。
「インスタンス名.プロパティ名 = “値”」の場合、「インスタンス〇〇のプロパティ〇〇に値を代入する」という意味になります。
「.」は日本語で言う「の」という意味です。言葉では少し難しいと思うので、以下で実際にクラスを呼び出してみましょう。
「val インスタンス名 = クラス名()」でインスタンス化できるピヨ!
実際にクラスを呼び出してみよう
では実際にクラスを呼び出してみましょう。
サンプルコード
以下のサンプルコードでは、Rinkoというクラスをインスタンス化して、名前と年齢を与えて挨拶をさせています。
fun main() { val rinko = Rinko() rinko.name = "リンコ" rinko.age = 10 rinko.greet() } class Rinko { var name = "" var age = 0 fun greet() { println("こんにちは、私の名前は${name}ピヨ!年齢は${age}歳ピヨ!") } }
出力
サンプルコードを実行すると、以下のように出力されます。
こんにちは、私の名前はリンコピヨ!年齢は10歳ピヨ!
このコードの流れは、以下のようになっています。
- 「val rinko = Rinko()」でインスタンスrinkoを生成
- その際に、クラスRinkoの内容が丸々インスタンスrinkoに代入される
- インスタンスrinkoのプロパティnameにリンコ、プロパティageに10が代入される
- インスタンスrinkoの関数greetが実行され、文章が出力される
このように、オブジェクト指向の言語では、設計図である「クラス」に様々な「プロパティ変数」を持たせ、そのクラスを「インスタンス化」しています。
そしてインスタンス化したクラスに対して、様々な命令(関数の呼び出し)をしていくという処理を行っています。
インスタンス化して実行までの流れはしっかり理解しておくピヨ!
【Kotlin】1つのクラスに対していくつでもインスタンス化できる
最後に、クラスという設計図があれば、その1つのクラスに対していくつでも同じ製品を作る(インスタンス化)ことができます。
サンプルコード
以下のサンプルコードでは「人」という意味を持つ「Personクラス」から3人の人間を生成(インスタンス化)します。
fun main() { val person1 = Person() person1.name = "一郎" person1.age = 20 val person2 = Person() person2.name = "二郎" person2.age = 18 val person3 = Person() person3.name = "三郎" person3.age = 16 person1.greet() person2.greet() person3.greet() } class Person { var name = "" var age = 0 fun greet() { println("こんにちは、私の名前は${name}です。年齢は${age}歳です。") } }
出力
サンプルコードを実行すると、以下のように出力されます。
こんにちは、私の名前は一郎です。年齢は20歳です。 こんにちは、私の名前は二郎です。年齢は18歳です。 こんにちは、私の名前は三郎です。年齢は16歳です。
このように、1つのクラスから複数のインスタンスを生成できるのが「オブジェクト指向プログラミング」ピヨ!
まとめ
この記事では、プログラミング言語であるKotlinのクラスとプロパティについて勉強していきましたが、いかがでしたでしょうか?今回の記事をまとめると以下のようになります。
- Kotlinはオブジェクト指向言語の1つ
- クラスは設計図で変数や関数をひとまとめにしたもの
- クラス内にある変数のことをプロパティと言う
- 設計図から実体を作ることを「オブジェクトを生成する」や「クラスをインスタンス化する」と言う
今回勉強した「クラス」や「プロパティ」はKotlinの入門レベルの知識になるので、何回も読み直してしっかり覚えておきましょう。
次回の記事では「ゲッターとセッター」について勉強していくピヨ!
プログラミング未経験の方や入門レベルの方、Kotlinについて詳しくなりたい方は、また一緒に勉強するピヨ!
コメント