欢迎光临
我们一直在努力

Kotlin面向对象编程精要

Kotlin 类和对象基础

Kotlin 是面向对象的语言,类和对象是其核心概念。类的定义使用 class 关键字,对象通过实例化类创建。

class Person {
var name: String = "Unknown"
var age: Int = 0
}

fun main() {
val person = Person()
person.name = "Alice"
person.age = 25
println("${person.name} is ${person.age} years old")
}

主构造函数与初始化

Kotlin 支持主构造函数和次构造函数。主构造函数直接在类名后声明,初始化逻辑可写在 init 块中。

class Car(val brand: String, var model: String) {
init {
println("Initializing a $brand $model")
}
}

fun main() {
val car = Car("Tesla", "Model S")
println(car.model) // 输出: Model S
}

次构造函数

次构造函数通过 constructor 关键字定义,需委托给主构造函数或其他次构造函数。

class Book(val title: String, val author: String) {
var price: Double = 0.0

constructor(title: String, author: String, price: Double) : this(title, author) {
this.price = price
}
}

fun main() {
val book = Book("Kotlin Guide", "Jane Doe", 29.99)
println("${book.title} by ${book.author}, price: $${book.price}")
}

继承与覆盖

Kotlin 默认类为 final,需标记为 open 才能被继承。方法覆盖使用 override 关键字。

open class Animal(val name: String) {
open fun makeSound() {
println("Some generic sound")
}
}

class Dog(name: String) : Animal(name) {
override fun makeSound() {
println("$name barks")
}
}

fun main() {
val dog = Dog("Buddy")
dog.makeSound() // 输出: Buddy barks
}

数据类

数据类自动生成 equals()、hashCode() 和 toString() 等方法,适用于存储数据。

data class User(val id: Int, val username: String, val email: String)

fun main() {
val user = User(1, "alice", "alice@example.com")
println(user) // 输出: User(id=1, username=alice, email=alice@example.com)
}

伴生对象与静态成员

Kotlin 使用 companion object 实现类似静态成员的功能。

class Logger {
companion object {
fun log(message: String) {
println("[LOG] $message")
}
}
}

fun main() {
Logger.log("Application started") // 输出: [LOG] Application started
}

对象表达式与单例

对象表达式用于匿名对象,单例通过 object 关键字实现。

object Database {
val connection = "Connected"
fun query(sql: String) = "Result for: $sql"
}

fun main() {
println(Database.connection) // 输出: Connected
println(Database.query("SELECT * FROM users"))
}

密封类

密封类限制子类范围,常用于状态管理。

sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
}

fun handleResult(result: Result) {
when (result) {
is Result.Success -> println("Success: ${result.data}")
is Result.Error -> println("Error: ${result.message}")
}
}

fun main() {
handleResult(Result.Success("Data loaded"))
}

赞(0)
未经允许不得转载:171主机测评 » Kotlin面向对象编程精要
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址