每天学一点Swift----面向对象上(七)
2017-05-29 23:56
211 查看
十.方法
1. 方法是类或实例的行为特征的抽象,方法是面向对象理论中重要的组成部分。但从功能上来看,方法完全类似于函数。
2. 方法和函数的区别是:方法必须属于一个类型或一个实例,因此方法不能像函数那样被独立执行。执行方法时必须使用类型本身或实例作为调用者。----在同一个类型内部的方法相互调用时,表面看起来是直接使用方法名,实际上默认是用self在调用。
3. 从面向对象的角度看,方法要么属性实例,要么属于类型。但从系统设计的角度看,方法的本质依然是函数,因此程序可以直接把方法赋值给函数类型的变量。一旦函数类型变量引用了某个方法后,既可以通过该对象来调用方法,也可以通过函数类型的变量来使用方法。
4. 举个栗子:
class Person
{
func test()
{
print("== test")
}
class func bar(#msg : String)
{
print(" == bar")
}
}
var per = Person()
var f1 : () -> () = per.test //test是实例方法
var fu : (String) -> Person.bar //bar是类型方法
//下面两行代码的本质完全相同
per.test() ----
注意,上面的方法名后面没有括号,这里要有括号
f1()
//下面两行代码的本质完全相同
Person.bar(msg : " hahahah")
f2("hahahahah")
5. 注意:在将方法赋值给函数类型的变量时,方法名后面不能加圆括号,一旦加来圆括号就表示为方法的调用了。
6. 类中的类型方法和实例方法都可以被分离、转换为独立的函数。但是需要说明的是,结构体、枚举所包含的实例方法不能分离、转换成函数。
7. 方法的外部形参名与函数的外部形参名是不同的。函数的形参默认没有外部形参名,但是通过两中方法指定外部形参名。但Swift默认为方法但除第一个形参之外但其他形参都添加了外部形参名:外部形参名与局部形参名形同----就像在局部形参名之前加了#前缀一样。
8. 如果希望外部形参名与内部形参名不同,Swift也允许为形参显式指定外部形参名。
9. 如果希望取消隐式的外部形参名(不需要任何外部形参名),Swift允许通过将外部形参名指定为下划线(_)来取消外部形参名。
10. 方法的第一个形参没有外部形参名,因此,如果要指定外部形参与内部形参不同,或者取消隐式的外部形参名,都是针对除了第一个形参之外的其他的形参。
上一篇:每天学一点Swift----面向对象上(六)
下一篇:每天学一点Swift----面向对象上(八)
1. 方法是类或实例的行为特征的抽象,方法是面向对象理论中重要的组成部分。但从功能上来看,方法完全类似于函数。
2. 方法和函数的区别是:方法必须属于一个类型或一个实例,因此方法不能像函数那样被独立执行。执行方法时必须使用类型本身或实例作为调用者。----在同一个类型内部的方法相互调用时,表面看起来是直接使用方法名,实际上默认是用self在调用。
3. 从面向对象的角度看,方法要么属性实例,要么属于类型。但从系统设计的角度看,方法的本质依然是函数,因此程序可以直接把方法赋值给函数类型的变量。一旦函数类型变量引用了某个方法后,既可以通过该对象来调用方法,也可以通过函数类型的变量来使用方法。
4. 举个栗子:
class Person
{
func test()
{
print("== test")
}
class func bar(#msg : String)
{
print(" == bar")
}
}
var per = Person()
var f1 : () -> () = per.test //test是实例方法
var fu : (String) -> Person.bar //bar是类型方法
//下面两行代码的本质完全相同
per.test() ----
注意,上面的方法名后面没有括号,这里要有括号
f1()
//下面两行代码的本质完全相同
Person.bar(msg : " hahahah")
f2("hahahahah")
5. 注意:在将方法赋值给函数类型的变量时,方法名后面不能加圆括号,一旦加来圆括号就表示为方法的调用了。
6. 类中的类型方法和实例方法都可以被分离、转换为独立的函数。但是需要说明的是,结构体、枚举所包含的实例方法不能分离、转换成函数。
7. 方法的外部形参名与函数的外部形参名是不同的。函数的形参默认没有外部形参名,但是通过两中方法指定外部形参名。但Swift默认为方法但除第一个形参之外但其他形参都添加了外部形参名:外部形参名与局部形参名形同----就像在局部形参名之前加了#前缀一样。
8. 如果希望外部形参名与内部形参名不同,Swift也允许为形参显式指定外部形参名。
9. 如果希望取消隐式的外部形参名(不需要任何外部形参名),Swift允许通过将外部形参名指定为下划线(_)来取消外部形参名。
10. 方法的第一个形参没有外部形参名,因此,如果要指定外部形参与内部形参不同,或者取消隐式的外部形参名,都是针对除了第一个形参之外的其他的形参。
上一篇:每天学一点Swift----面向对象上(六)
下一篇:每天学一点Swift----面向对象上(八)
相关文章推荐
- 每天学一点Swift----面向对象上(五)
- 每天学一点Swift----面向对象上(六)
- 每天学一点Swift----面向对象下(八)
- 每天学一点Swift----面向对象上(四)
- 每天学一点Swift----面向对象上(十一)
- 每天学一点Swift----面向对象下(十)
- 每天学一点Swift----面向对象上(三)
- 每天学一点Swift----面向对象下(七)
- 每天学一点Swift----面向对象上(一)
- 每天学一点Swift----面向对象上(十二)
- 每天学一点Swift----面向对象下(九)
- 每天学一点Swift----面向对象下(五)
- 每天学一点Swift----面向对象上(二)
- 每天学一点Swift----面向对象上(八)
- 每天学一点Swift----面向对象上(九)
- 每天学一点Swift----面向对象上(十)
- 每天学一点Swift----面向对象下(一)
- 每天学一点Swift----面向对象下(四)
- 每天学一点Swift----面向对象下(六)
- 每天学一点Swift----面向对象下(二)