每天学一点Swift----面向对象上(七)
来源:互联网 发布:高性能mysql epub 编辑:程序博客网 时间:2024/06/05 01:53
十.方法
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----面向对象下(五)
- leetcode 第三题 小白用最慢的算法做的
- [BFS] [Luogu P1299] 切孔机
- 微信公众号 全套免费 mx7f 教程视频 百度网盘
- AndroidHandler源码级分析及实现
- 聊聊安卓开发中主题样式的一种组织架构
- 每天学一点Swift----面向对象上(七)
- GDAL坐标转换
- 一个基于装饰者设计模式的上报框架
- Android XML 文件中引用资源的方法
- 使用 dbutils 进行批处理
- centos7 下安装canal,并实现将mysql数据同步到redis
- [bzoj3676]回文串
- mysql优化
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解