Kotlin object的使用

1. 匿名内部类:

interface TestObject{
	fun getTest():String
}
fun main(args: Array<String>) {
    val testObject = object :TestObject{
        override fun getTest(): String {
            return "执行了getTest"
        }
    }
    System.out.println(testObject.getTest())
}
执行了getTest

2. 超类型:

open class SetTest{
    fun setTest(){
        System.out.println("执行了setTest\n")
    }
}
interface GetTest{
    fun getTest():String
}
var getAndSet:SetTest = object:SetTest(),GetTest{
    override fun getTest(): String {
        return "执行了getTest\n"
    }
}
fun main(args: Array<String>) {
    System.out.println((getAndSet as GetTest).getTest())
    getAndSet.setTest()
}
执行了getTest

执行了setTest

3. 无类型:(只能在方法内部使用)

fun main(args: Array<String>) {
    val test = object{
        val a = "a"
        val b = "b"
    }
    System.out.println(test.a+ test.b)
}
ab

4. 修饰函数:(只能修饰私有函数)

private fun getTest() = object {
    val a = "a"
    val b = "b"
}

fun main(args: Array<String>) {
    System.out.println(getTest().a+ getTest().b)
}
ab

5. 修饰类:被object修饰的类为单例模式

object SetTest{
    var number = 0

    fun setAdd(){
        number++
    }

}

fun main(args: Array<String>) {
    for(i in 1..100){
        SetTest.setAdd()
    }
    System.out.println("结果为${SetTest.number}")
}
结果为100

6. 伴生对象:伴生对象为单例,原对象没影响。

class SetTest{
    companion object GetTest{
        var number = 0
        fun setAdd(){
            number++
        }
    }
    var numbers = 0
    fun setAdds(){
        numbers++
    }
}

fun main(args: Array<String>) {
    for(i in 1..100){
        SetTest.setAdd()
        SetTest().setAdds()
    }
    System.out.println("结果为${SetTest.number}\n")
    System.out.println("结果为${SetTest().numbers}\n")
}
结果为100

结果为0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值