kotlin 面向对象 伴生对象

22 阅读1分钟

kotlin中伴生对象的特点:

  • 在类中创建(使用companion object关键字)
  • 有且只有一个
  • 不用实例化类即可调用
  • 可定义编译期常量

实例:

//伴生对象
class Student{
    companion object {
        fun createstudent(name:String,age:Int){
            println("我的名字是${name},我的年龄是${age}")
        }
    }
}

fun main() {
    Student.createstudent("小明",15)
}

上述例子中没有实例化对象,直接调用类中的方法实现了输出。

拓展:const val和val的区别

特性const valval
本质编译期常量(Compile-time constant)运行时常量(Runtime constant)
赋值要求必须直接赋值字面量 / 常量表达式可赋值字面量、函数返回值、表达式等
作用域仅顶层(top-level)/ 对象(object)/ 伴生对象(companion object)任意作用域(类、函数、顶层等)
编译后表现直接嵌入字节码(类似 Java static final生成 getter 方法(类内)/ 直接常量(顶层)
可变性完全不可变(编译期确定,无法修改)引用不可变(值可能是可变对象)
支持类型仅基础类型(String/Int/Boolean 等)任意类型(包括自定义类、集合等)