您的位置:首页 > 移动开发 > Swift

每天学一点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----面向对象上(八)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift