目录
1、类的一般声明
2、构造函数+构造函数调用方法
3、主构造函数和次级构造函数
4、省去繁多的构造函数
class MainActivity : AppCompatActivity()
class MainActivity : AppCompatActivity(),View.OnClickListener
注意1:Kotlin的类默认都是public final 的,如果你想要不final,就需要用open修饰符来修饰类,表示开放的,可继承
open class MainActivity : AppCompatActivity()
open class MainActivity : AppCompatActivity(),View.OnClickListener
注意2:Kotlin中所有类的最终父类是Any(超类),Java中所有类都继承于Object(超类)
/**
* The root of the Kotlin class hierarchy. Every Kotlin class has [Any] as a superclass.
*/
public open class Any {
。。。。。。
}
1、如果我们需要给类添加具有参数的构造函数的时候,
我们就需要在类名的后面加小括号,然后输入参数
2、如果我们想要在构造函数中进行一些初始化操作的时候,
kotlin给我们提供了init代码块来作为构造函数的调用方法
//具有一个参数的构造函数
class Person(name:String) {
init {
//构造函数的操作在这里进行
}
}
注意:这里我们能创建多个init代码块,并且它们是按顺序执行的
class Person (name:String){
init {
println("init1")
}
init {
println("init2")
}
init {
println("init3")
}
}
fun main() {
val person=Person("张三")
}
//输出结果
init1
init2
init3
/**
* kotlin是有主构造函数和次级构造函数之分的
* 1、主构造函数就是类名后面的构造函数,它的参数个数可以在类名后面+小括号进行声明
* 2、当类的主构造函数没有声明的时候,你可以随意多个创建它的次级构造函数
*/
open class Animal {
constructor(name: String)
constructor(name: String, age: Int)
constructor(name: String, age: Int, type: String)
}
注意:但是当你声明了主构造函数的话,那么它的次级构造函数必须直接或者间接的调用它的主构造函数
open class Animal(name: String) {
//直接调用主构造函数
constructor(name: String, age: Int):this(name)
//间接调用主构造函数
constructor(name: String, age: Int, type: String):this(name, age)
}
我们创建不同的构造函数是因为他们的参数数量和顺序不同,但是我们能不能只创建一个构造函数就能实现上面多个构造函数的作用呢?
那就是创建一个主构造函数并且给主构造函数的参数初始化值。
这样我们就可以随便改变参数的数量和顺序了。
class Person(val name: String="张三", val age: Int=18, val sex: String="男", val weight: Int=120)
fun main() {
val person1=Person(name="张三")
val person2=Person("张三",19)
val person3=Person(age=19,name="李四",weight = 200)
val person4=Person(age=19,weight = 200)
}