クラスはオブジェクトの仕様を定義したもの
L どんな属性と機能を持ち合わせたオブジェクトを作るのかを定義した設計書
L クラス定義に基づいて作ったオブジェクトをインスタンスと言う
classの書き方
class className { var variable:type = initial init(引数:type) { self.variable = 引数 } function fun(引数:type) -> void { return x } }
playground
import UIKit var greeting = "Hello, playground" class MyFriend { var name:String var age:Int init(name:String, age:Int){ self.name = name self.age = age } func hello() -> String { let message = "Hello! \(name)です。\(age)歳です。" return message } } let friend1 = MyFriend(name: "植木", age: 31) let friend2 = MyFriend(name: "桜", age: 26) let str1 = friend1.name + "と" + friend2.name + "は友達です。" let str2 = friend1.name + "は" + String(friend1.age) + "歳です。" friend2.age += 1 let str3 = friend2.name + "は誕生日で" + String(friend2.age) + "歳になりました。" print(str1) print(str2) print(str3)
### 継承
class GoodFriend: MyFriend { let fortune = ["大吉", "吉", "小吉", "凶"] func uranai() -> String { let index = Int.random(in: 0 ..<fortune.count) let result = "今日の運勢は" + fortune[index] + "です!" return result } func who() -> String { return name + "です。よろしく!" } }
### スーパークラス初期化
var nickname:String init(name: String, age: Int, nickname: String){ self.nickname = nickname super.init(name: name, age:age) }
### extensionを使ってクラス拡張
class Player { var name: String = "" func hello() { print("やあ!" + name) } } extension Player { var who: String { get { return name } set(value){ name = value } } func bye(){ print("またね!" + name) } } let user = Player() user.who = "賢治" user.hello() user.bye()
これは数重ねるだけだなー