rokevin
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
  • 成员函数

  • 6.1 成员函数 vs 顶层函数
  • 示例:
  • 成员函数
    • 1. 实例成员函数(最常用)
    • 2. 伴生对象成员函数(类级别的成员函数)

成员函数

6.1 成员函数 vs 顶层函数

类型核心定义使用场景示例
成员函数定义在类 / 对象内部的函数类的行为封装、访问类的成员属性class A { fun foo() { ... } }
顶层函数定义在文件顶层(无类包裹)通用工具函数、无状态的全局函数fun foo() { ... }(直接写在.kt 文件)

示例:

// 顶层函数(直接定义在文件中)
fun printHello() {
    println("Hello 顶层函数")
}

class User {
    // 成员函数
    fun sayHello() {
        println("Hello 成员函数")
    }
}

fun main() {
    printHello() // 直接调用顶层函数
    User().sayHello() // 通过类实例调用成员函数
}

成员函数

类成员函数(也叫类的成员方法),是定义在类(或接口、数据类等)内部,并且属于该类实例(或类本身)的函数。它是类的重要组成部分,和类的属性(成员变量)一起,共同构成了类的行为和状态,用于实现该类的具体功能。

简单来说:类就像一个 “模板”,成员函数就是这个模板赋予其实例的 “行为能力”。

类成员函数的两种常见类型

  1. 实例成员函数(最常用)
  2. 伴生对象成员函数(类级别的成员函数)

1. 实例成员函数(最常用)

就是上面示例中的setAge()、getPersonInfo(),也是默认的类成员函数类型:

  • 依赖类的实例存在,必须先val/var 实例名 = 类名()创建对象,才能调用;
  • 可以访问实例的所有成员属性(每个实例的属性值独立,函数调用结果可能因实例不同而不同)。

2. 伴生对象成员函数(类级别的成员函数)

如果想让类成员函数不依赖实例,直接通过「类名。函数名」调用(类似 Java 的static方法),可以使用companion object(伴生对象)内部的成员函数:

class Student {
    var studentId: String = ""
    var className: String = ""

    // 伴生对象:属于类本身,而非实例
    companion object {
        // 伴生对象中的成员函数(类级别的成员函数)
        fun createDefaultStudent(): Student {
            val student = Student()
            student.studentId = "S001"
            student.className = "一年级一班"
            return student
        }
    }
}

fun main() {
    // 无需创建 Student 实例,直接通过「类名.函数名」调用伴生对象成员函数
    val defaultStudent = Student.createDefaultStudent()
    println("默认学生:学号${defaultStudent.studentId},班级${defaultStudent.className}")
}
最近更新:: 2026/4/2 20:07
Contributors: luokaiwen