在 Kotlin 中,定义一个类非常简单。类使用 class
关键字来声明,并且可以包含属性和方法。
class Person { var name: String = "" var age: Int = 0 fun introduce() { println("我的名字是 $name,我今年 ${age} 岁。") } }
在这个例子中,我们定义了一个名为 Person
的类,它有两个属性:name
和 age
。这两个属性分别被声明为 var
类型,这意味着它们是可变的。类中还定义了一个方法 introduce()
,该方法用于输出个人信息。
创建对象
创建一个类的对象也很简单。你可以通过类名后跟一对括号来创建一个对象实例。
fun main() { val person = Person() person.name = "张三" person.age = 30 person.introduce() }
在这个例子中,我们创建了一个 Person
类的实例,并给它的属性赋值。然后调用了 introduce()
方法。
构造函数
Kotlin 支持主构造函数和次构造函数。主构造函数在类头定义,次构造函数则在类体内定义。
主构造函数
主构造函数通常用来初始化类的属性。它可以直接放在类名后面,也可以带有一些参数。
-- -------------------- ---- ------- ----- ---------- ----- ------- --- ---- ---- - --- ----------- - -------------- --------- ------ ---- - - --- ------ - --- ------ - ------------ --- ------------------ -
在这个例子中,我们在类定义中直接定义了两个参数:val name
和 var age
。这样当我们创建 Person
类的新实例时,就需要传入这两个参数。
次构造函数
次构造函数必须委托给主构造函数。这可以通过在次构造函数的头部使用 this
关键字来实现。
-- -------------------- ---- ------- ----- ------ - --- ----- ------ - -- --- ---- --- - - ----------------- ------- ---- ---- - --------- - ---- -------- - --- - --- ----------- - -------------- --------- ------ ---- - - --- ------ - --- ------ - ------------ --- ------------------ -
在这个例子中,我们定义了一个次构造函数,它接受两个参数并将其分配给类的属性。
数据类
Kotlin 提供了一种特殊的数据类(data class
),用于存储数据。数据类会自动生成一些方法,如 equals()
, hashCode()
, toString()
等。
data class User(val name: String, var age: Int) fun main() { val user = User("赵六", 28) println(user) // 输出:User(name=赵六, age=28) }
在这个例子中,我们定义了一个 User
数据类,并创建了一个实例。当我们打印这个实例时,会自动调用 toString()
方法,输出格式化的字符串。
密封类
密封类用于表示受限的类继承结构。当一个值为有限几种类型之一时,密封类特别有用。
-- -------------------- ---- ------- ------ ----- ------ - ---- ----- ----------- ----- ------- - -------- ---- ----- --------- -------- ------- - -------- - --- --------------- ------- - ---- -------- - -- -------------- -- ---------------------------- -- ------------ -- ------------------------------- - - --- ------ - --------------------------------- ------------------------------- -
在这个例子中,我们定义了一个密封类 Result
,它可以是 Success
或 Error
。根据 process
函数中的结果类型,我们可以执行不同的操作。
抽象类与接口
Kotlin 支持抽象类和接口。抽象类用于定义一些通用的方法,但不提供具体的实现。接口则定义了一组方法签名,具体实现由实现该接口的类来完成。
抽象类
-- -------------------- ---- ------- -------- ----- ------ - -------- --- ----------- - ----- --- - -------- - -------- --- ----------- - ------------- - - --- ------ - --- --- - ----- --------------- -
在这个例子中,我们定义了一个抽象类 Animal
,其中有一个抽象方法 makeSound()
。然后我们创建了一个子类 Dog
来实现这个方法。
接口
-- -------------------- ---- ------- --------- ------- - --- ----- - ----- ---- - ------- - -------- --- ----- - ------------------ - - --- ------ - --- ---- - ------ ---------- -
在这个例子中,我们定义了一个接口 Flyable
,其中有一个 fly()
方法。然后我们创建了一个类 Bird
来实现这个接口。
以上就是 Kotlin 中类和对象的基础知识。通过这些概念,你可以开始构建更复杂的程序结构。