"kotlin基础教程之类和继承"
类和继承是面向对象编程的两个基本概念。在 Kotlin 编程语言中,类和继承的实现方式与 Java 相似,但也存在一些不同之处。
类声明
在 Kotlin 中,类声明使用 `class` 关键字,后跟类名和类型参数。类声明的基本结构如下所示:
```kotlin
modifiers ("class" | "interface") SimpleName typeParameters? primaryConstructor? (":" annotations delegationSpecifier{","})? typeConstraints (classBody? | enumClassBody)
```
其中,`modifiers` 是可选的,表示类的修饰符,例如 `abstract`、`final`、`open` 等;`SimpleName` 是类名;`typeParameters` 是类型参数,用于泛型编程;`primaryConstructor` 是主构造函数,用于初始化类的对象;`annotations` 是注解,用于添加元数据;`delegationSpecifier` 是委托指定,用于委托其他对象的行为;`typeConstraints` 是类型约束,用于限定类型;`classBody` 是类体,用于定义类的成员变量和函数。
构造函数声明
在 Kotlin 中,构造函数可以声明一个主构造函数(primary constructor)和多个次级构造函数(secondary constructor)。主构造函数声明在类声明的头部,用于初始化类的对象。次级构造函数声明在类体中,用于提供多个构造函数的方式。
主构造函数的声明格式如下所示:
```kotlin
class User constructor(name: String)
```
次级构造函数的声明格式如下所示:
```kotlin
class User(name: String) {
constructor(name: String, age: Int) : this(name) {
// 初始化代码
}
}
```
在主构造函数中,不能包含任何代码,因此使用 `init` 代码块对其初始化。例如:
```kotlin
class User(name: String) {
init {
// 初始化代码
}
}
```
继承
在 Kotlin 中,继承使用 `:` 符号表示。例如:
```kotlin
class Student(name: String, age: Int) : User(name, age)
```
任何类都继承自 `Any` 类,该类提供了三个默认函数:`equals()`、`hashCode()` 和 `toString()`。当类未声明构造函数时,继承其他类时,也不需要在主构造函数中显示的声明构造函数,必须在次级构造函数中显示调用父类构造函数。
在继承时,子类可以调用父类的构造函数,例如:
```kotlin
open class User(name: String) {
// ...
}
class Student(name: String, age: Int) : User(name, age) {
// ...
}
```
在继承时,子类也可以 override 父类的函数,例如:
```kotlin
open class User(name: String) {
open fun printName() {
println("User: $name")
}
}
class Student(name: String, age: Int) : User(name, age) {
override fun printName() {
println("Student: $name, Age: $age")
}
}
```
Kotlin 中的类和继承机制提供了强大的编程能力,能够满足各种复杂的编程需求。