クマの手も借りたい
馬とテニスとリラックマが好きな IT 系のエンジニアです。
Kotlin

【Kotlin入門】クラスの基本構造(変数、関数、継承)

Kotlin のクラスは他の言語と同じような構成なので多く語ることはありません。

しかし、少しだけ書き方に特徴のある部分もあるのでそこだけチェックしておきます。

プロパティ(フィールド変数)

クラス内で定義する変数です。

フィールド変数の方がしっくりくるのですが、最近はプロパティという呼び名をよく耳にします。

インスタンス化した場合、get() や set() のアクセサは定義不要なので、値を直接操作することができます。

fun main(args: Array) {
    val hoge = Hoge()
    hoge.name = "カオルさん"
    println(hoge.name)
}

class Hoge() {
    var name: String = ""
}

hoge.name で直接 name に値を代入しています。

結果は以下の通りです。

カオルさん

メソッド

クラス内で定義する関数です。

以前紹介した通り、関数の定義は fun になります。

あわせて読みたい
【Kotlin入門】自分で関数を定義する方法ここまでは Kotlin の標準で用意されている関数を使ってきましたが、開発を進めていく上で標準の関数では対応できないものがでてきます。...

明示的に何もつけなければ final 扱いとなりますが、自分が親クラスとなり子クラスにオーバーライドして欲しいメソッドとなる場合は open を付けておきましょう。

open fun hoge() {

}

継承

メソッドの部分でも触れましたが、Kotlin でも定義したクラス間で継承関係を作ることができます。

最近は、継承を多用することを避ける傾向にあるように見受けられますが、効率化できるところは継承でカバーしておきたいですよね。

Kotlin の場合は、親クラスとなれるクラスは open を付けてクラスを作成します。

open class Hoge() {

}

また、子クラスから親クラスを継承する場合はクラス名の後にコロンで親クラスを指定します。

class Fuga() : Hoge() {

}

サンプルプログラム

これまでに紹介してきた要素を使ってサンプルプログラムを作成してみました。

効果的なクラスではないので、その辺はご了承ください。
(完全にリファクタリングが必要なクラスです)

あと、リラックマを知らない人にはなんのことかわからないかもしれませんね・・・。
(サンプルの題材が失敗)

fun main(args: Array) {

    // リラックマ
    val rira = Rirakkuma("リラックマ", "着ぐるみのクマ", "だんご")
    rira.profile()
    rira.job()
    
    // コリラックマ
    val korira = Korirakkuma("コリラックマ", "白いクマ", "イチゴ")
    korira.profile()
    korira.job()
    
    // キイロイトリ
    val tori = Kiiroitori("キイロイトリ", "カオルさんのトリ", "お金")
    tori.profile()
    tori.job()
    tori.friend = "犬"
    tori.other()
}

/**
 * キャラ
 */
open class Character(val name: String, val job: String, val favorite: String) {
    
    // 友達
    var friend: String = "こぐまちゃん"
    
    // プロフィール
    fun profile() {
        println("%sは%sで、好きなものは%sです。".format(name, job, favorite))
    }
    
    // 担当(職業?)
    open fun job() {
        println("はちみつの森に住んでいる茶色いこぐまです。胸毛がフサフサですよ。")
    }
}

/**
 * リラックマ
 */
class Rirakkuma(name: String, job: String, favorite: String) : Character(name, job, favorite) {

    // オーバーライド
    override fun job() {
        println("いつもダラダラしているだけではありませんよ。\n")
    }
}

/**
 * コリラックマ
 */
class Korirakkuma(name: String, job: String, favorite: String) : Character(name, job, favorite) {

    // オーバーライド
    override fun job() {
        println("いたずら大好きな可愛い存在で、" + friend + "と一番の仲良しです。\n")
    }
}

/**
 * キイロイトリ
 */
class Kiiroitori(name: String, job: String, favorite: String) : Character(name, job, favorite) {

    // オーバーライド
    override fun job() {
        println("いつも一生懸命お掃除してる頑張り屋さんです。")
    }

    // その他追記事項
    fun other() {
        println("%sが苦手ですが犬の方は仲良くしたいみたい。".format(friend))
    }
}

実行結果は以下の通りです。

リラックマは着ぐるみのクマで、好きなものはだんごです。
いつもダラダラしているだけではありませんよ。

コリラックマは白いクマで、好きなものはイチゴです。
いたずら大好きな可愛い存在で、こぐまちゃんと一番の仲良しです。

キイロイトリはカオルさんのトリで、好きなものはお金です。
いつも一生懸命お掃除してる頑張り屋さんです。
犬が苦手ですが犬の方は仲良くしたいみたい。

やさしいKotlin入門

プログラミング初心者または Kotlin 初心者向けの入門本。Android 開発ではなく Kotlin の言語を覚えてみたい方にオススメの入門本です。

Java と比較して説明される書籍が多い中、Java や他のプログラム言語を知らない人向けになるので、例えば Java はあまり詳しくないけど PHP や Python は書けるといったパターンとも相性がいいですよ。

created by Rinker
¥2,592
(2018/09/20 12:37:29時点 Amazon調べ-詳細)

あなたにオススメ