1488901775
摘要今天刚刚从凡科面试Java回来,4个小时的来回车程敌不过一张试卷一杯热茶还有那问不到10句话的面试官,坐等复试通知,祝我好运。
问题描述试卷是5道Java题,前面4题都是一些关于Java的小逻辑小算法题目, 最后一题有点尴尬了。。。那就是 static class
之前接触过 静态实例变量静态方法静态块 ,mmp竟然还有个static class
当时的题目的代码是这样的
public static class XXX{
…
}
当时我就觉得怪怪的,其实问题就出在这,只有内部静态类!这样是错的。
下面是静态内部类与非静态内部类的区别
(1)内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用。
(2)非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员。
(3)一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面。
还有就是创建静态内部类与非静态内部类实例的区别
静态内部类实例 = new 外部类.静态内部类();
// 创建静态内部类的实例
OuterClass.StaticInnerClass simple = new OuterClass.StaticInnerClass();
非静态内部类实例 =new 外部类.new 非静态内部类();
// 创建非静态内部类的实例
OuterClass.InnerClass obj = new OuterClass().new InnerClass();