静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?静态嵌套类以及内部类的概念可能很多对小伙伴不是很熟悉,特别是新手同学甚至可能说有点陌生,但是只要认真去了解下,其实并没有想象中这么困难。静态嵌套类和内部类相关知识点应用也是可能遇到的一个基础java面试题,不管原来知道不知道,现在告诉你,赶紧记牢面试无忧!

常见Java面试题之静态嵌套类和内部类的区别

静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?

Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
Java中非静态内部类对象的创建要依赖其外部类对象,也就是说没有所谓的外部类对象,因此无法创建内部类对象,如果要在静态方法中创建内部类对象,可以这样做:new Outer().new Inner();

本题涉及java知识点分析

java静态嵌套类(Static Nested Class)

静态嵌套类(Static Nested Class),是 Java 中对类的一种定义方式,是嵌套类的一个分类。
Java 编程语言允许一个类被定义在另一个类中,这样的类就称为嵌套类。嵌套类分为两种:静态的和非静态的。用 static 关键字来声明的嵌套类,就称为静态嵌套类。
包含嵌套类的类,可称为外围类(Enclosing Class)或外部类(Outer Class)。静态嵌套类不能访问其外围类的其他成员。静态嵌套类作为其外部类的成员,它可声明为 private、public、protected 或包私有的。
静态嵌套类在与其外部类或其他类的实例成员进行交互的时候,就像任何其他顶层类(Top-Level Class)一样。实际上,静态嵌套类在行为上就是一个顶层类,为了便于打包,它被嵌套在了另一个顶层类中。

Java内部类(Inner Class)

内部(inner)类指那些类定义代码被置于其它类定义中的类;而对于一般的、类定义代码不嵌套在其它类定义中的类,称为顶层(top-level)类。对于一个内部类,包含其定义代码的类称为它的外部(outer)类。

内部类特点
* 内部类对象可以访问创建它的对象的实现,包括私有数据;
* 内部类不为同一包的其他类所见,具有很好的封装性;
* 使用内部类可以很方便的编写事件驱动程序;
* 匿名内部类可以方便的定义运行时回调;
* 内部类可以独立继承一个接口,不受外部类是否继承接口影响;



以上是思博网络为广大奔走在面试以及学习阶段的java同行整理的关于Java 静态嵌套类和内部类可能遇到的面试问题以及重要知识点,可能存在不足或者需要补充,您有什么观点和认识,欢迎指正补充,大家一起快乐学Java,高薪在就业!
如果遇到什么疑问或者困惑,可以联系我们,乐于与您分享讨论!