Posted at

Swiftのメソッドの種類

More than 3 years have passed since last update.


メソッドの種類


  • クラスメソッド

  • インスタンスメソッド

  • イニシャライザ(init)


クラスメソッド

クラスメソッドのお約束

1. クラスメソッドの定義はfuncの前にclassが付く

2. クラスメソッドの呼び出しは、クラス名.クラスメソッド名


class Human {

#1. クラスメソッドの定義はfuncの前に`class`が付く
class func helloClass() {
println("hello class")
}

}

#2. クラスメソッドの呼び出しは、クラス名.クラスメソッド名
Human.helloClass() //=> "hello class"

『クラスメソッドは、クラスが使うメソッドだからクラス名.クラスメソッド名と記述する』


インスタンスメソッド

インスンタンスメソッドのお約束

1. インスタンスメソッドの定義はfuncのみ

2. インスタンスメソッドの呼び出しは、インスタンス.インスタンス名

class Human {

#1. インスタンスメソッドの定義は`func`のみ
func helloInstance() {
println("hello instance")
}

}

let human = Human()

#2. インスタンスメソッドの呼び出しは、インスタンス.インスタンス名
human.helloInstance() //=> "hello instanse"

『インスタンスメソッドは、インスタンスが使うメソッドだからインスタンス名.インスタンスメソッド名と記述する』


イニシャライザ(init)

initのお約束

1. initメソッドはinit()と定義

2. initメソッドはインスタンスを生成時に自動で呼び出される

3. initに引数を設定した場合、インスタンス生成時に引数を渡す


引数無しのパターン

class Human {

# 1. initメソッドは``init()``と定義
init() {
println("init Hunma")
}

}

# 2. initメソッドはインスタンスを生成時に自動で呼び出される
let human = Human() //=> "init Human"


引数ありのパターン

class Human {

#1. initメソッドは``init()``と定義
init(name: String) {
println("init Hunma is \(name)")
}

}

#3. initに引数を設定した場合、インスタンス生成時に引数を渡す
let human = Human(name: "keita") //=> "init Human is keita"