kotlin中对象表达式

在kotlin中,也有类似的功能,但不是匿名类,而是对象,需要使用object关键字,对象要继承的列需要与object之间的冒号(:)分隔.

fun main(arg: Array<String>) {
    process(MyClass("bill"))//输出verify

    process(object : MyClass("bill") {
        override fun verify() {
            super.verify()//输出verify
            println("object verify")//输出object verify
        }
    })
}

open class MyClass(name: String) {
    open var name = name
    open fun verify() {
        println("verify")
    }
}

fun process(obj: MyClass) {
    obj.verify()
}

对象和类一样,只能有一个父类,但可以实现多个接口

fun main(arg: Array<String>) {
    process(MyClass("bill"))//输出verify

    process(object : MyClass("bill"),myInterface {
        override fun verify() {
            super.verify()//输出verify
            println("object verify")//输出object verify
        }
    })
}

open class MyClass(name: String) {
    open var name = name
    open fun verify() {
        println("verify")
    }

}

fun process(obj: MyClass) {
    obj.verify()
    if(obj is myInterface){
        obj.closeData()//输出closeData
    }
}

interface myInterface{
    fun closeData(){
        print("closeData")//输出closeData
    }
}

如果只想建立一个对象,不想任何的类型,也不实现任何的接口,如下:

fun too() {
    val adc = object {
        var x: Int = 1
    }
    print(adc.x)
}

 

posted on 2018-12-19 11:06  LoaderMan  阅读(726)  评论(0编辑  收藏  举报

导航