类和对象
类的构造
定义
- 类也是用关键字class修饰。
- 如果是public修饰的类,public可以省略
- 用:表示类的继承。
- 继承需要在类后面加上()。
- 创建类实例时不需要new。
- init{}表示类初始化模块。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
}
}
class Shape {
init {
println("Shape是表示形状的类")
}
}
构造函数
主构造函数
- 主构造函数,放在类名后面,用constructor修饰。
- 没有带@符号修饰的,constructor可以省略。
- 主构造函数不是必须的。
class Shape1(name:String) {
init {
println("Shape1是表示形状的类,名称是$name")
}
}
class Shape1 constructor(name:String) {
}
var shape1 = Shape1("通用形状")
次构造函数
- 没有名称。
- 用关键字constructor修饰。
- 如果有主构造函数需要调用主构造函数。
- 会先调用主构造函数的初始化函数。
class Shape2(name:String) {
init {
println("Shape2是表示形状的类,名称是$name")
}
constructor(name:String,side:Int) : this(name) {
println("Shape2是表示形状的类,名称是$name,是${
side}边形")
}
}
var shape2 = Shape2("通用形状")
var shape3 = Shape2("通用形状",4)
class Shape3 {
init {
println("Shape3是表示形状的类")
}
constructor() {
println("Shape3是表示形状的类,无参")
}
constructor(name:String) {
println("Shape3是表示形状的类,名称是$name")
}
constructor(name:String,side:Int) {
println("Shape3是表示形状的类,名称是$name,是${
side}边形")
}
}
var shape4 = Shape3()
var shape5 = Shape3("通用形状")
var shape6 = Shape3("通用形状",5)
参数带默认值的造函数
class Shape4 {
init {
println("Shape4是表示形状的类")
}
constructor(name:String,side: