第十四节 嵌套类、内部类

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中


image.png

嵌套类是不能访问外部类的成员的,why?


image.png

因为kotlin中的嵌套类是static的

fun main(args: Array) {

    val innerClass=OutClass.InnerClass()
    innerClass.sayHello()
}

class OutClass{
    var name="张三"
    class InnerClass{
        fun sayHello()
        {
            println("嵌套类")
        }
    }
}

输出:


image.png

2、内部类(关键词inner)


fun main(args: Array) {

    val innerClass=OutClass().InnerClass()
    innerClass.sayHello()
}

class OutClass{
    var name="张三"
    inner class InnerClass{
        fun sayHello()
        {
            println("内部类${name}")
        }
    }
}

输出:


image.png

内部类是可以访问外部类成员的,注意内部类和嵌套类的区别,还有就是如何创建内部类和嵌套类

3、


fun main(args: Array) {

    val innerClass=OutClass().InnerClass()
    innerClass.sayHello()
}

class OutClass{
    var name="张三"
    inner class InnerClass{
        var name="李四"
        fun sayHello()
        {
            println("内部类${name}")
            println("内部类${this.name}")
            println("内部类${[email protected]}")

        }
    }
}

输出:


image.png

你可能感兴趣的:(第十四节 嵌套类、内部类)