在 Objective-C 中,类是唯一能定义方法的类型。
Swift中类/结构体/枚举都能定义方法
。在 Swift 语言中,实例方法是属于某个特定类、结构体或者枚举类型实例的方法。-
实例方法特性
- 实例方法要写在它所属的类型的前后大括号({})之间
- 实例方法能够隐式访问它所属类型的所有的其他实例方法和属性
- 实例方法只能被它所属的类的某个特定实例调用
- 实例方法不能脱离于现存的实例而被调用
函数的参数可同时有内部参数名(内部使用)和外部参数名(调用函数时使用)。当只有内部参数名时,编译器会为参数自动创建一个和内部参数名相同的外部参数名。
实例方法的参数前面加"_",则调用时必须省略外部名称
class Person {
var _name: String = "HaRi"
var _age: Int = 26
//如果不希望某个参数作为外部参数使用, 可以在参数前面加上 _ , 忽略外部参数
func setName(name: String, _ age: Int)
{
_name = name
_age = age
}
func show()
{
print("name = \(_name) age = \(_age)")
}
}
var p = Person()
p.show()
// p.setName(name:"xiaoHan", age:100) Error!
p.setName(name: "hjq", 88) //正确姿势
p.show()
- 类中用
class/static
关键字来声明类方法
class Person {
var _name:String = "kong"
// 实例方法
func sayHello(){
println("say \(_name)")
}
// 类方法
class func sayHi() {
println("class method")
}
}
// 调用 实例方法
var per = Person()
per.sayHello()
// 调用类方法
Person.sayHi()
以上也可以用static声明类方法,static声明的类方法不可被子类重写
static func sayHi() {
println("class method")
}
- 结构体和枚举中用static关键字声明类方法
struct Person4 {
var name: String = "HanJunqiang"
static var card: String = "1234567"
func show()
{
print("name = \(name) card = \(Person4.card)")
}
static func staticShow()
{
//类方法中没有self
//静态方法对应OC中的+号方法, 和OC一样在类方法中不能访问非静态属性
print("card = \(Person4.card)")
}
}
var p4 = Person4()
p4.show()
Person4.staticShow()