美文网首页
对象声明与对象表达式

对象声明与对象表达式

作者: codergege | 来源:发表于2018-11-26 17:38 被阅读0次

回到目录
项目源码 kotlin-class 项目


Kotlin 提供了语言层面的对单例模式的支持, 只需要用 object 关键字代替 class
声明一个类即可.

object 类中可以有属性, 方法, 但是不能有构造函数(这是显而易见的, 对吧).

可以直接用类名去引用属性和方法.

// 单例模式
object SingletonDemo {
    val username: String get() = "root"
    var password: String = ""

    fun getInfo() = "username: $username, password: $password"
}

fun main(args: Array<String>) {
    val info: String
    SingletonDemo.password = "123456"
    info = SingletonDemo.getInfo() // object 类使用时直接用类名就可以了
    println(info)
}

上面代码输出结果是:

username: root, password: 123456

对象表达式

object 关键字还可以用来创建对象表达式, 即一个匿名类的对象, 也称匿名对象.

使用场景跟 java 中匿名内部类中的使用场景一样:

window.addMouseListener(object : MouseAdapter() {
    override fun mouseClicked(e: MouseEvent) {
        // ...
    }

    override fun mouseEntered(e: MouseEvent) {
        // ...
    }
})

可以把对象表达式赋值给一个变量, 这个变量就引用了该对象.

open class ObjExpDemo {
    fun sayHi() = println("Hi")
    open fun sayHello() = println("Hello")
}

fun main(args: Array<String>) {
    val codergege = object: ObjExpDemo() {
        override fun sayHello() {
            println("Hello~~")
        }
    }
    with(codergege) {
        sayHi()
        sayHello()
    }
}

输出结果是:

Hi
Hello~~

回到目录

相关文章

  • 19.Kotlin枚举与委托深入详解

    枚举 示例代码 对象声明 示例代码 关于对象表达式与对象声明之间的区别 1.对象表达式是立刻初始化或者执行的2.对...

  • 对象声明与对象表达式

    回到目录项目源码 kotlin-class 项目 Kotlin 提供了语言层面的对单例模式的支持, 只需要用 ob...

  • Kotlin

    用object实现单例模式 或者 Kotlin中的继承例子: 对象表达式,对象声明和伴随对象的区别对象表达式在使用...

  • es6 新增脑图

    一,声明与表达式let, const,解构赋值Symbol 二,内置对象新增:map与setproxy与Refle...

  • JavaScript深入理解 —— 原型、原型链和继承

    普通对象和函数对象 函数对象:使用函数声明、函数表达式、Function构造函数创建的对象 函数实际上是对象,每个...

  • js函数总结

    一声明:函数声明,存在声明提升函数表达式 二内部对象:每个函数都有this,argments两个对象。apply ...

  • Kotlin原理-object关键字

    object关键字有下面的三种用法: 对象声明 伴生对象 对象表达式 我们逐一来看看它们的实现原理 对象声明 ob...

  • 对象表达式&对象声明

    对象表达式:Object expression 对象表达式是一种结构,用来创建一个object的实例举个栗子: 和...

  • 三种方式创建函数及构造函数与普通函数之间的区别

    创建函数的三种方式:函数声明,函数表达式,函数对象 函数声明 函数表达式 函数对象形式 构造函数和普通函数的区别 ...

  • 正则和Math数学对象

    > 正则表达式声明方式: 1. 对象声明法:(RegExp是正则对象) RegExp(str1,str2); st...

网友评论

      本文标题:对象声明与对象表达式

      本文链接:https://www.haomeiwen.com/subject/zgzbqqtx.html