美文网首页我爱编程
kotlin嵌套类、内部类、匿名内部类、伴生对象

kotlin嵌套类、内部类、匿名内部类、伴生对象

作者: 哈哈_defb | 来源:发表于2018-06-08 14:28 被阅读0次

kotlin嵌套类、内部类、匿名内部类

fun main(args: Array<String>) {
    /**
     * 调用嵌套类中的方法
     */
//输出:类可以嵌套其他类中
    Test.Nested().nestedTest()

    /**
     *     调用内部类中的方法
     */
//输出:内部类可以引用外部类的成员,例如:成员属性
    Test().Inner().innerTest()
    /**
     * 采用对象表达式来创建接口对象,即匿名内部类的实例。
     */
    instance.setInterFace(object : TestInterFace {
        override fun test() {
            println("对象表达式创建匿名内部类的实例")
        }
    })
}
class Test {
    var v = "成员属性"

    /**
     * 一个在类中嵌套的类
     * 引用不到外层嵌套类的成员
     */
//嵌套类
    class Nested {
        fun nestedTest() {
            println("类可以嵌套其他类中")
        }
    }
    /**
     * inner标记一个类是内部类
     * 可以引用外部类的成员
     * 采用this@类名方式,获取到外部类的this对象
     */
//内部类
    inner class Inner {
        fun innerTest() {
            var t = this@Test //获取外部类的成员变量
            println("内部类可以引用外部类的成员,例如:" + t.v)
        }
    }
    fun setInterFace(test: TestInterFace) {
        test.test()
    }
}
/**
 * 定义接口
 */
interface TestInterFace {
    fun test()
}

伴生对象

Kotlin中的对象指的是使用object关键字定义的类型声明,一般用作单例模式和伴生对象。

object让创建单例变得十分简单:

object Resource{
    val name="sanshi"

    fun say(){
        println("Hello")
    }
}

Kotlin允许在类中使用companion object创建伴生对象,用伴生对象的成员来代替静态成员:

class Person(val name:String){
    companion object {
        val anonymousPerson=Person("sanshi")
        fun sayHello(){
            println("Hello")
        }
    }

    var age=0
    fun sayName(){
        println("My name is $name")
    }
}

使用伴生对象实际上是在这个类内部创建了一个名为Companion的静态单例内部类,伴生对象中定义的属性会直接编译为外部类的静态字段,而函数会被编译为伴生对象的方法。

fun main(args: Array<String>) {
    Person.anonymousPerson
    Person.sayHello()
    val person = Person("sanshi")
    person.sayName()
}

相关文章

  • kotlin嵌套类、内部类、匿名内部类、伴生对象

    kotlin嵌套类、内部类、匿名内部类 伴生对象 Kotlin中的对象指的是使用object关键字定义的类型声明,...

  • Kotlin-Object关键字作用

    Object关键字使用场景:匿名内部类、单例、伴生对象。 匿名内部类 Kotlin匿名内部类定义使用跟Java类似...

  • Kotlin内联类、内部类、嵌套类

    Kotlin内联类、内部类、嵌套类 在开始介绍Kotlin内联类、内部类、嵌套类之前,先简要回顾一下java中的内...

  • 常见的类

    嵌套类 内部类 枚举类 密封类 数据类 单例模式 伴生对象 嵌套类 嵌套类是嵌套在其它类中的类 不能访问外部类的成...

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • kotlin object

    三种语义 匿名内部类 单例模式 伴生对象 定义一个类的同时还创建了对象。 匿名内部类 函数式(SAM)接口http...

  • Kotlin学习(四)

    对象表达式 在设置点击事件的时候常常会用到匿名类部类,在kotlin中匿名类部类表示如下: 对象声明 在Kotli...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • 《Kotlin 实战》- 4 类、对象和接口

    4.1.4 内部类和嵌套类:默认是嵌套类 默认情况下 Kotlin 的嵌套类不能访问外部类的实例(不持有外部类的引...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

网友评论

    本文标题:kotlin嵌套类、内部类、匿名内部类、伴生对象

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