Kotlin修炼手册(四):对象与类之间的差异
2023-12-29 13:39:09
Kotlin 中的对象与类
在 Kotlin 中,类和对象都是面向对象编程的基本要素。
- 类 是一个模板,用于创建具有特定属性和行为的对象。
- 对象 是类的实例,具有类的所有属性和行为。
定义类
在 Kotlin 中,使用 class
来定义类。类名应该以大写字母开头。例如,以下代码定义了一个名为 Person
的类:
class Person(name: String, age: Int) {
var name = name
var age = age
}
这个类有两个属性:name
和 age
。属性 name
是一个字符串,属性 age
是一个整数。
创建对象
要创建一个对象,可以使用 new
关键字。例如,以下代码创建一个名为 person
的 Person
对象:
val person = Person("John Doe", 30)
这个对象具有属性 name
的值 "John Doe" 和属性 age
的值 30。
访问属性
要访问对象的属性,可以使用点运算符 (.)。例如,以下代码获取对象 person
的属性 name
的值:
val name = person.name
调用方法
对象还可以具有方法。方法是可以在对象上调用的函数。例如,以下代码定义了一个名为 greet()
的方法:
class Person(name: String, age: Int) {
var name = name
var age = age
fun greet() {
println("Hello, my name is $name and I am $age years old.")
}
}
要调用方法,可以使用点运算符 (.)。例如,以下代码调用对象 person
的方法 greet()
:
person.greet()
继承
继承允许一个类从另一个类继承属性和方法。例如,以下代码定义了一个名为 Student
的类,它继承自 Person
类:
class Student(name: String, age: Int, major: String) : Person(name, age) {
var major = major
}
这个类具有属性 major
,它继承了属性 name
和 age
。
多态性
多态性是指能够以统一的方式处理不同类型的对象。例如,以下代码定义了一个名为 printInfo()
的函数,它可以打印任何类型对象的属性:
fun printInfo(obj: Any) {
println("Name: ${obj.name}")
println("Age: ${obj.age}")
println("Major: ${obj.major}")
}
这个函数可以打印任何类型对象的属性,因为 Any
是所有 Kotlin 类的超类。
抽象类
抽象类不能被实例化,但它们可以被子类继承。例如,以下代码定义了一个名为 Shape
的抽象类:
abstract class Shape {
abstract fun area(): Double
}
这个类具有一个抽象方法 area()
,它必须被子类实现。
接口
接口定义了方法签名,但它不实现这些方法。例如,以下代码定义了一个名为 Drawable
的接口:
interface Drawable {
fun draw()
}
这个接口定义了一个方法 draw()
, 它必须被实现接口的类实现。
枚举
枚举是表示一组常量的类型。例如,以下代码定义了一个名为 Color
的枚举:
enum class Color {
RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
}
这个枚举定义了七个常量:RED
, ORANGE
, YELLOW
, GREEN
, BLUE
, INDIGO
, VIOLET
.
注解
注解是用于提供元数据信息的元素。例如,以下代码定义了一个名为 @MyAnnotation
的注解:
annotation class MyAnnotation(val value: String)
这个注解有一个参数 value
,它是一个字符串。
结论
本文讨论了 Kotlin 中的对象与类之间的区别。它讨论了类的结构、对象的创建、继承、多态性和抽象类。它还讨论了 Kotlin 中的接口、枚举和注解。本文旨在为开发人员提供有关 Kotlin 面向对象编程的基础知识,帮助他们学习 Kotlin。