maoruibin/maoruibin.github.com

Java 内部类

Opened this issue · 1 comments

关于内部类更详细的解释 https://www.jianshu.com/p/f897100a09fc

Java 类中,每一个类都会有一个默认构造方法叫 init 。

Java 中可以在类中继续定义一个类,这个类就叫做内部类。如下,在外部类 Outer 中创建了一个名为 Inner 的 Class,它就叫做 Outer 的内部类。

在 Java 的内部类中,内部类是可以访问外部类属性的,这是一开始学 Java 时大家都知道的,但是这里要问的是,这个机制是如何做到的?

在 非静态内部类中,这个内部类会默认持有一个外部类的实例,所以当我们访问外部类对象时,其实是通过这个默认实例来访问的。

public class Outer {
    private String name;
    class Inner{
        void test(){
            System.out.print("name is "+name);
        }
    }
}

那这个外部类的实例叫什么?

this$0

如上,一开始为匿名内部类设置值后,以后再次更新数据,匿名内部类中的变量值是不更新的。