Kotlin 内部类,通过嵌套类的学习,我们会发现在嵌套类中是无法访问外部类中成员的,这样定义的嵌套类在实际开发中没有任何意义,为此,Kotlin中提供了内部类,内部类只需要在嵌套类的基础上添加一个“inner”
关键字即可,将其标识为内部类。
接下来稍微修改嵌套类代码来定义一个内部类,并调用内部类中的成员函数,具体代码如下所示。
package com.itheima.chapter04
class Outer {
var name = " 酷客网"
inner class Inner {
fun sayHello() {
println("Hello !我叫$name。") //调用外部类的成员变量
}
}
}
fun main(args: Array<String>) {
Outer().Inner().sayHello() // 调用内部类的成员函数
}
运行结果:
Hello!我叫酷客网。
在上述代码中,在Inner类前边添加了一个inner关键字之后,Inner类就变成了一个内部类,在内部类的sayHello()方法中就可以访问外部类中的字段name。
当在main()方法中访问内部类中的成员时,首先需要实例化外部类,然后再实例化内部类,最终通过内部类对象调用成员函数,即“Outer().Inner().sayHello()”
。
Java中的嵌套类和内部类与Kotlin中的区别
- 在Java中,将一个类定义在另一个类的内部,则称这个类为成员内部类,如果成员内部类加上static修饰,则是称为静态内部类。Java中成员内部类中可以访问外部类的所有成员。
- 在Kotlin中,将一个类定义在另一个类的内部,不加任何修饰符,则这个类将被默认为是一个嵌套类,如果加上inner修饰,则是一个内部类。Kotlin中的内部类可以访问外部类中的变量,而嵌套类却不可以访问。
酷客教程相关文章:
评论前必须登录!
注册