1.静态内部类只能访问外部类的静态成员和方法.
2.静态内部类在外部被创建时,不需要外部类的实例,这也就是为什么它不可以访问外部类的非静态成员了,因为它没有外部类对象的引用啊.
3.非静态内部类可以访问外部类的所有成员和方法,包括私有变量.但同时在创建内部类对象的时候,需要外部类的实例,同时把这个外部类的实例的引用传给了内部类对象.
需要了解2个概念:内部类和静态修饰符static
1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。
2)静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。
这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用 外部类名+内部类名 获得。
以下举例说明怎么使用:
Student类有个叫School的内部类(非静态)
Student stu = new Student();
stu.School sch = new stu.School();
sch就是School的一个对象。
假如School是内部静态类:
Student.School sch = new Student.School();