2015-09-03

Kotlinことはじめ:(2)クラスを作る

main関数だけでプログラムは動きますが、オブジェクト指向言語らしくクラスを作りましょう。

パッケージ

Hello Worldではデフォルトパッケージに関数だけ作りましたが、今回はパッケージも作ります。
ソースフォルダを右クリックし、メニューからNew->Packageを選択します。


表示されるダイアログにパッケージ名を入力してOKボタンをクリックすると、パッケージが作られます。

クラス

作ったパッケージを右クリックし、メニューからNew->Kotlin File/Classを選択します。
適当なクラス名を入力し、今回はClassを選びます。
(Fileを選択してもクラスを書くことはできますが、Classを選ぶと雛形を作ってくれます)
package hello_world

/**
 *
 */
public class HelloWorld {
}
これだけ見ると、Javaとほとんど変わりませんね。

コンストラクタ

Javaなどではコンストラクタに順位はありませんが、Kotlinは一つのプライマリコンストラクタと、その他のコンストラクタ(セカンダリコンストラクタ)と分けられており、プライマリコンストラクタだけ特別視されます。
プライマリコンストラクタは最初のコンストラクタであればよいのですが、簡単なのは次のような書き方。
package hello_world

/**
 *
 */
public class HelloWorld(name:String) {
    init {
        println("Hello $name.")
    }
}
クラス名の後ろに仮引数を書き、コンストラクタの処理はinitブロックに記述します。
また、
package hello_world

/**
 *
 */
public class HelloWorld(val name:String) {

}
のように、仮引数の前にvalまたはvarと書くことで、その引数がそのままプロパティになります。
プロパティについて詳しいことはまた別途。

関数

Kotlinではメソッドではなく関数に処理を書いていきます。
既にmain関数を作っていますが、
[スコープ] fun 関数名([仮引数...])[:戻り値の型] {
    処理
}
という具合に書きます。
package hello_world
/**
 *
 */
public class HelloWorld(val name:String) {
    public fun hello() {
        println("Hello $name.")
    }
}
というような感じで関数を追加し、
デフォルトパッケージのmain関数から呼んでみます。
import hello_world.HelloWorld

fun main(vararg args: String) {
    var obj = HelloWorld("Takahiro")
    obj.hello()
}
Kotlinではインスタンスを作るのに、newを使いません。
実行するとこんな感じ。

0 件のコメント: