Kotlin
声明变量
Kotlin
使用val
声明不可变变量,使用var
声明可变变量
1 | val name: String = "小明" |
类型推导机制:自动推导变量的数据类型,不需要显式指定
1 | val name = "小明" |
但是如果延迟赋值,就必须显式指定类型
1 | val name: String |
函数
Kotlin
使用fun
声明函数
1 | fun test() { |
返回值类型放在形参列表后面,使用:
分隔
1 | fun add(i1: Int, i2: Int): Int { |
函数只有一个表达式时,可以省略花括号和return
关键字,用一个等号代替
1 | fun add(i1: Int, i2: Int): Int = i1 + i2 |
因为类型推导机制的存在,可以省略返回值类型
1 | fun add(i1: Int, i2: Int) = i1 + i2 |
类
声明类
Kotlin
使用class
声明类
1 | class User { |
类中没有属性和方法时,可以省略花括号
1 | class User |
Kotlin
中创建对象不需要使用new
关键字
1 | val user = User() |
构造函数
Kotlin
中构造函数分为主构造函数和次构造函数,主构造函数只能有一个,次构造函数可以有多个
主构造函数
主构造函数写在类名后面,使用constructor
关键字声明,后面括号中的形参作为类的属性,使用var
或val
关键字修饰,constructor
关键字也可以省略
如果类没有显式声明任何主构造函数和次构造函数,会自动生成一个无参的主构造函数
1 | class User constructor(private var name: String, private var age: Int) { |
主构造函数没有函数体,如果要在主构造函数中写逻辑,可以写在init
结构体中
1 | class User(private var name: String, private var age: Int) { |
主构造函数中的形参可以省略var
或val
关键字,省略之后的形参不作为属性,只能在init
结构体中使用
1 | class User(name: String, age: Int) { |
次构造函数
Kotlin
中可以有多个次构造函数,而无主构造函数,使用constructor
关键字声明次构造函数
1 | class User { |
当一个类既有主构造函数又有次构造函数时,所有次构造函数必须直接或间接的调用主构造函数
1 | // 主构造函数中的形参省略了var或val关键字,只能在init结构体中使用 |
继承
Kotlin
中的类默认是不可继承的,如果要使一个类可以被继承,需要在类名前添加open
关键字
1 | open class User { |
让IKun
类继承User
类,使用:
关键字
下面代码中,被继承的类User
之所以带有()
,是因为Kotlin
和java
一样,在类继承时子类的构造函数会调用父类的构造函数,如果父类没有定义构造函数,子类继承时应该调用父类的无参构造函数,所以被继承的类带有()
1 | class IKun : User() { |
如果父类有多个构造函数,子类只需要选择调用一个构造函数即可,具体选择哪个构造函数,在继承时通过括号中的参数指定
1 | // 父类的主构造函数无形参 |
如果子类中只有次构造函数,没有主构造函数,那么被继承的类User
后不需要再带()
,构造函数中使用super
关键字调用父类的构造函数
1 | class IKun : User { |