类
- 声明,也是class
类只有无参一个造函数
class User { }
类有一个构造函数,有参
class User(age: Int, name: String) {
val mName = name
}
使用的时候
var user =User(1,"ming")
user.mName
默认属性有get,set方法
val修饰的属性不提供set方法
get/set手动写法
class User(age: Int, name: String) {
var mName = name
get() = field
set(value) {
field = value
}
}
类有多个构造函数
-
一个类可以有一个主构造函数,多个次构造函数
-
主构造函数跟在类名后面
-
次构造函数使用constructor修饰
class Person { var children: MutableList<Person> = mutableListOf<Person>(); /** * 次构造函数 */ constructor(parent: Person) { parent.children.add(this) } }
继承
一个类如果要可以被继承,需要使用open修饰,比如
open class User(age: Int, name: String) { }
覆盖
要覆盖类中的属性或者方法,都要使用open来修饰,比如:
open class User(age: Int, name: String) {
open var address = ""
open fun run(){
}
}
嵌套类与内部类
Java中的内部类直接写class就行,kotlin中:
- 直接class是嵌套类;
- 使用inner class修饰的是内部类,内部类调用外部类方法使用super@Outer
嵌套类
class Outer {
private val bar: Int = 1
class Nested {
fun foo() = 2
}
}
// 其他类调用的时候
val demo = Outer.Nested().foo() // == 2
内部类
class Outer {
private val bar: Int = 1
inner class Inner {
fun foo() = bar
}
}
// 其他类调用的时候
val demo = Outer().Inner().foo() // == 1
静态方法
companion object{
fun request(){
}
}
方法参数
在kotlin中,方法的参数默认是val,不可变的。且只有构造函数可以设置参数为val或者var的。一般函数不可设置。
方法返回值
fun t():String{
return ""
}
- 返回值跟在后面