Kotlin学习笔记 第二章 类与对象 第十节 内部类嵌套类

参考链接

Kotlin官方文档

https://kotlinlang.org/docs/home.html

中文网站

https://www.kotlincn.net/docs/reference/properties.html

本系列为参考Kotlin中文文档

https://download.youkuaiyun.com/download/u011109881/21418027

整理的笔记 

pdf也可以在这里下载

https://www.kotlincn.net/docs/kotlin-docs.pdf

第二章 第十节 内部类嵌套类

知识点

1 嵌套类

2 更多嵌套类的形式

3 内部类

4 匿名内部类

笔记

fun main() {
    // 1 嵌套类
    // 通过外部类调用嵌套类
    val demoNestClass = Outer.Nested().foo() // == 2
    println(demoNestClass)

    // 3 内部类
    // 内部类 vs 嵌套类
    // 内部类使用inner关键字修饰
    // 内部类有一个外部类的引用 因此内部类可以在类体中访问外部类的属性和方法 嵌套类不行
    val demoInnerClass = Outer2().Inner().foo() // == 1
    println(demoInnerClass)
    println(Outer2().Inner().testInner())

    // 4 匿名内部类
    setOnClickListener(object : OnClickListener {
        override fun onClick() {
        }
    })
}

// 4 匿名内部类 demo
fun setOnClickListener(l: OnClickListener) {
}

interface OnClickListener {
    fun onClick()
}

class Outer2 {
    private val bar: Int = 1
    fun testOuter() {
        println("testOuter")
    }

    fun test() {
        println("outer test")
    }

    inner class Inner {
        fun foo() = bar
        fun testInner() {
            testOuter()
            println("testInner")
            this@Outer2.test() // 调用外部类的同名方法
            this.test() // 调用内部类的同名方法
        }

        private fun test() {
            println("inner test")
        }
    }
}

// 2 更多嵌套类的形式start
interface OuterInterface {
    // a接口嵌套类
    class InnerClass

    // b接口嵌套接口
    interface InnerInterface {
        fun callback()
    }
}

class OuterClass {
    // c类嵌套类
    class InnerClass

    // d类嵌套接口
    interface InnerInterface
}
// 2 更多嵌套类的形式end

// 1 嵌套类demo
class Outer {
    private val bar: Int = 1
    fun testOuter() {
        println("testOuter")
    }

    class Nested {
        fun foo() = 2
        // fun foo() = bar // 嵌套类无法访问外部类的属性
        //fun testInner(){ // 嵌套类无法访问外部类的方法
        //    testOuter()
        //}
    }
}

class D0310NestedAndInnerClass

本来打算本篇写两个小章节的 无奈官网Kotlin泛型部分实在难以理解 泛型这一章节会专门出一章节

且应该不会涉及星投影和类型投影

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值