返回

Kotlin修炼手册(四):对象与类之间的差异

Android

Kotlin 中的对象与类

在 Kotlin 中,类和对象都是面向对象编程的基本要素。

  • 是一个模板,用于创建具有特定属性和行为的对象。
  • 对象 是类的实例,具有类的所有属性和行为。

定义类

在 Kotlin 中,使用 class 来定义类。类名应该以大写字母开头。例如,以下代码定义了一个名为 Person 的类:

class Person(name: String, age: Int) {
    var name = name
    var age = age
}

这个类有两个属性:nameage。属性 name 是一个字符串,属性 age 是一个整数。

创建对象

要创建一个对象,可以使用 new 关键字。例如,以下代码创建一个名为 personPerson 对象:

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,它继承了属性 nameage

多态性

多态性是指能够以统一的方式处理不同类型的对象。例如,以下代码定义了一个名为 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。