Kotlin 对象

文章目录

对象表达式(匿名对象)

在 Kotlin 中可以使用object {}声明一个匿名的对象,我们无需声明这个对象的类:

kt 复制代码
fun main() {
    val any = object {
        fun greet() = print("Hi")
    }

    any.greet()
}
复制代码
Hi

在匿名对象中,我们 能声明抽象成员。

匿名对象可以继承自类或接口,默认情况下它的类型是Any,继承后它将可以是所继承的所有类型(如果显式声明其类型,它将是声明的类型):

kt 复制代码
open class Greeter {
    fun greet() = print("Hi")
}


interface Runnable {
    fun run()
}


fun main() {
    val any = object: Greeter(), Runnable {
        override fun run() = println("Run")
    }

    any.run()
    any.greet()
}
复制代码
Run
Hi

对象的声明

我们可以使用object,像定义类class那样定义一个对象:

kt 复制代码
fun interface Runnable {
    fun run()
}

        
object Greeter: Runnable {
    fun greet() = print("Hi")
    
    
    override fun run() = println("Run")
}


fun main() {
	Greeter.run()
    Greeter.greet()
}
复制代码
Run
Hi

对象 有构造函数,因为它 可被实例化。

对象中 能声明抽象方法,因为它可被继承。

相关推荐
木尧大兄弟8 分钟前
Decoder-Only 模型 自回归vs一次前传 两种 Hidden State 的对比
数据挖掘·回归·kotlin
我命由我1234513 分钟前
Android 开发 - UriMatcher(一个 URI 分类器)
android·java·java-ee·kotlin·android studio·android-studio·android runtime
我命由我123452 小时前
Android 多进程开发 - FileDescriptor、Uri、AIDL 接口定义不能抛出异常
android·java·java-ee·kotlin·android studio·android-studio·android runtime
Kapaseker6 小时前
一杯半 Kotlin 美式详解 value class
android·kotlin
黄林晴6 小时前
Kotlin 2.3.20 发布!解构声明不怕写反了
android·kotlin
蜡台1 天前
Android Gradle 项目下载编译失败解决---持续更新
android·java·kotlin·gradle
BoomHe1 天前
Kotlin shareIn 和 stateIn 使用场景
android·kotlin·android jetpack
Kapaseker1 天前
一杯 Kotlin 美式学透 enum class
android·kotlin
耶叶2 天前
Android开发:基于SharedPreferences实现的状态缓存
android·kotlin
耶叶3 天前
Android开发:用户注册和登录的数据库代码详细解释
android·数据库·kotlin