每天学一点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----面向对象上(八)

原创粉丝点击