swiftの学習(クラス)
クラス
カプセル化とかできるあれです。
他のマニュアルを軽く見た限りではまだ、あまりいろいろできる感じには見えないけど
簡単に組めるような作りにしているのかな?
構成
サンプル
Car.swift
// // Car.swift // import Foundation // class定義 class Car{ var name = "" var age = 0 // 初期化 init(){ println("Car 初期化") self.name = "" self.age = 0 } // メソッド func test1(){ println("test1 method") } // setter func setName(_name: String){ self.name = _name } func setAge(_age: Int){ self.age = _age } // getter func getName()->String{ return self.name } func getAge()->Int{ return self.age } }
Bus.swift
// // Bus.swift // import Foundation class Bus : Car{ // 初期化処理を上書き override init(){ println("Bus 初期化") } // メソッド override func test1(){ println("Bus test1 method") } // メソッド func test2(){ println("Bus method") } }
main.swift
// // main.swift // import Foundation // class初期化 var _a = Car() // メソッド実行 _a.test1() // setter _a.setAge(20) _a.setName("あああ") // getter println println(_a.getAge()) println(_a.getName()) // 継承 var _b = Bus() _b.test1() _b.test2() // setter _b.setAge(33) _b.setName("いいい") // getter println println(_b.getAge()) println(_b.getName())
ちなみに実行結果
Car 初期化 test1 method 20 あああ Bus 初期化 Car 初期化 Bus test1 method Bus method 33 いいい
classの概要
- "class"で定義
- "init"が初期化処理
- privateやprotectedなどの定義はまだない
- 継承した場合は"override"しないとメソッドを上書きできない
こんな感じかな?
インターフェースとか抽象クラスの方法とかあったらいいなと思ったけど見つけきれなかった…
classファイルを読み込んでいないけど意識して読み込む処理はないのかな?
所感
まだ理解度は少ない感じだけどプログラム言語としての必要最低限は把握した感じ。
全部を理解しようとしているとモチベーションが下がってしまうのでここからは写経タイムに入るかもしれない。
簡単なアプリのチュートリアルとかあったら真似して作ってみるのもアリかも…