Open maoruibin opened 5 years ago
关于内部类更详细的解释 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
在 非静态内部类中,这个内部类会默认持有一个外部类的实例,所以当我们访问外部类对象时,其实是通过这个默认实例来访问的。
public class Outer { private String name; class Inner{ void test(){ System.out.print("name is "+name); } } }
那这个外部类的实例叫什么? this$0
如上,一开始为匿名内部类设置值后,以后再次更新数据,匿名内部类中的变量值是不更新的。
关于内部类更详细的解释 https://www.jianshu.com/p/f897100a09fc
Java 类中,每一个类都会有一个默认构造方法叫 init 。
Java 中可以在类中继续定义一个类,这个类就叫做内部类。如下,在外部类 Outer 中创建了一个名为 Inner 的 Class,它就叫做 Outer 的内部类。
在 Java 的内部类中,内部类是可以访问外部类属性的,这是一开始学 Java 时大家都知道的,但是这里要问的是,这个机制是如何做到的?