嵌套类就是在另一个类内部创建的类。在Kotlin中,嵌套类默认情况下是静态的,因此无需创建类的对象即可访问其数据成员和成员函数。嵌套类无法访问外部类的数据成员。
class outerClass{ //外部类代码 class nestedClass{ //嵌套类代码 } }
class outerClass{ private var name: String = "Ashu" class nestedClass{ var description: String = "code inside nested class" private var id: Int = 101 fun foo(){ // print("name is ${name}")//不能访问外部类成员 println("Id is ${id}") } } } fun main(args: Array<String>){ // 嵌套类必须初始化 println(outerClass.nestedClass().description)//访问属性 var obj = outerClass.nestedClass()//对象创建 obj.foo()//访问成员函数 }
输出:
code inside nested class Id is 101
内部类是在另一个具有关键字inner的类中创建的类。换句话说,无涯教程可以说标记为“内部”的嵌套类称为内部类。
内部类不能在接口内部或非内部嵌套类中声明。
class outerClass{ //外部类代码 inner class innerClass{ //嵌套类代码 } }
内部类优于嵌套类的优点是,即使它是私有的,它也可以访问外部类的成员。内部类保留对外部类对象的引用。
class outerClass{ private var name: String = "Ashu" inner class innerClass{ var description: String = "code inside inner class" private var id: Int = 101 fun foo(){ println("name is ${name}")//访问外部类成员甚至私有 println("Id is ${id}") } } } fun main(args: Array<String>){ println(outerClass().innerClass().description)//访问属性 var obj = outerClass().innerClass()//对象创建 obj.foo()//访问成员函数 }
输出:
code inside inner class name is Ashu Id is 101
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)