美文网首页
每天学一点Swift----面向对象上(七)

每天学一点Swift----面向对象上(七)

作者: 冯可乐同学 | 来源:发表于2017-05-29 23:58 被阅读4次

十.方法

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----面向对象上(七)

      本文链接:https://www.haomeiwen.com/subject/agvlfxtx.html