方法声明
- 普通类的方法
- 静态类的方法
- companion object 伴生类的方法
方法的结构:
普通类的方法:
//普通类的方法,class就是普通类
class Person {
fun test() {
println("成员方法")
}
}
//需要先构建出对象,才能访问成员方法
>>> Person().test()
静态类的方法:
//静态类里面的方法就是静态方法
//一般实现一个工具类,可以借助关键字object来创建一个静态类
//不需要构建实例对象,可以通过类名,直接访问静态方法
object NumUtil {
fun double(num: Int): Int {
return num * 2
}
}
>>>NumUtil.double(1)
companion object伴生类的方法:
Kotlin中并没有stagic关键字,不过我们可以借助companion object来实现静态类方法的目的.
//普通类
class Person {
fun test() {
println("成员方法")
}
//当想在普通类里定义一个静态方法的话用伴生类
companion object {
fun test2("成员方法test2") {
}
}
}
>>>Person().test()
>>>Person.test2()
方法参数
- 默认参数
- 具名参数
- 可变数量的参数
默认参数:
//省略参数的时候使用的默认值.与Java相比,这可以减少重载数量
fun read(offset: Int = 0) {
...
}
具名参数:
//如果一个默认参数在一个无默认值的参数之前,那么无默认值的参数,只能通过使用具名参数调用该方法来使用
fun read(offset: Int = 0, start: Int) {
...
}
>>>read(start = 1) //仅仅只给start传递值,使用默认值offset = 0
//如果最后一个参数是方法,那么它既可以作为具名参数在括号内传入,也可以在括号外传入.
//Unit是没有返回值的意思
fun read(offset: Int = 0, start: Int, action: () -> Unit) {
....
}
>>> read(start=1) {println("hello")}
>>> read(offset=1, start=1, action= {println("hello")})
可变参数:
//方法的参数(通常是最后一个)可以用vararg修饰符标记
fun append(vararg str: Char): String {
val result = StringBuffer()
for (char in str) {
result.append(char)
}
return result.toString()
}
>>>append('1', '2', '3')
当我们调用vararg方法时,除了可以一个接一个的传入参数以外,如果已经有一个数组并希望将其内容传给该方法,使用伸展(spread)操作符(在数组前面加*):
val world = charArrayOf('w', 'o', 'r', 'l', 'd')
val result = append('a', 'b', *world)
可变参数是有要求的:1.只有一个参数可以标注为vararg;2.如果vararg参数不是最后一个参数,可以使用具名参数语法,给后面的参数传递值
Lambda表达式
Java8的时候开始支持Lambda表达式,Lambda表达式可以理解为一种语法糖,Kotlin一经开源就支持Lambda表达式.
如果是有返回值的方法,花括号中最后一行的值就是方法的返回值
Lambda隐形参数it
- it并不是Kotlin中的关键字(保留字).
- it是在当一个高阶方法中Lambda表达式的参数只是一个的时候,可以使用it来使用此参数
- it可表示为单个参数的隐式名称,是Kotlin语言的约定
如何使用下划线_ 在使用Lambda表达式的时候,可以用下划线_表示为使用的参数,表示不处理这个参数.