1、嵌套类
看java中的一段代码
public class demo {
String name="张三";
public static void main(String[] args) {
}
class InnerClass{
public void sayHello()
{
System.out.println(name);
}
}
}
注意在InnerClass中是可以直接访问外部类name的
看下kotlin中
嵌套类是不能访问外部类的成员的,why?
因为kotlin中的嵌套类是static的
fun main(args: Array<String>) {
val innerClass=OutClass.InnerClass()
innerClass.sayHello()
}
class OutClass{
var name="张三"
class InnerClass{
fun sayHello()
{
println("嵌套类")
}
}
}
输出:
2、内部类(关键词inner)
fun main(args: Array<String>) {
val innerClass=OutClass().InnerClass()
innerClass.sayHello()
}
class OutClass{
var name="张三"
inner class InnerClass{
fun sayHello()
{
println("内部类${name}")
}
}
}
输出:
内部类是可以访问外部类成员的,注意内部类和嵌套类的区别,还有就是如何创建内部类和嵌套类
3、
fun main(args: Array<String>) {
val innerClass=OutClass().InnerClass()
innerClass.sayHello()
}
class OutClass{
var name="张三"
inner class InnerClass{
var name="李四"
fun sayHello()
{
println("内部类${name}")
println("内部类${this.name}")
println("内部类${this@OutClass.name}")
}
}
}
输出: