クラスの基本はこんな感じだ。
class Hoge {
// プロパティ
var hoge:Int = 3
var hoge2:Int
// ゲッター、セッター
var hoge3:Int {
get {
return hoge2 * 3
}
set {
hoge2 = newValue / 3
}
}
// イニシャライザ
init(hoge2:Int) {
self.hoge2 = hoge2
}
// デイニシャライザ
deinit {
println("deinit")
}
// メソッド
func methodHoge() -> Int {
return self.hoge
}
}
// インスタンスの生成
var hoge = Hoge(hoge2:30) // イニシャライザでは、ラベルが必要なんだな
println(hoge.hoge2) // 30と表示
hoge.hoge2 = 60
println(hoge.hoge2) // 60と表示
println(hoge.hoge3) // hoge3のゲッターが呼ばれるんで
// 180と表示
hoge.hoge3 = 30 // hoge3のセッターが呼ばれて、hoge2に10が設定される
println(hoge.hoge2) // 10と表示
println(hoge.methodHoge()) // 3と表示
hoge = Hoge(hoge2:22) // ここで最初のインスタンスが破棄されるのでデイニシャライザが実行されて
// deinitと表示
println(hoge.hoge2)
println("END")
プロパティ、メソッドは、それぞれ変数の宣言と関数の宣言と同じだ。
プロパティは、C#みたいに取得するときに呼ばれる処理、設定するときに呼ばれる処理が書ける。setを省略するとリードオンリーのプロパティになる。
イニシャライザ、デイニシャライザはC++のコンストラクタ、デストラクタに相当する。