内部类和静态内部类的区别

前两天在《Thinking in Java》上看到关于这个,感觉总结的很好。

如果不需要内部类对象与其外围类对象之间有联系,那么可以将内部类声明为static。这通常称为嵌套类。想要理解static应用于内部类时的含义,就必须记住,普通的内部类对象隐式地保存了一个引用,指向创建他的外围类对象。然而,当内部类是static时,就不是这样了。

嵌套类意味着:

  1)要创建嵌套类的对象,并不需要其外围类的对象。

  2)不能从嵌套类的对象中访问非静态的外围类对象。

嵌套类与普通的内部类还有一个区别,普通内部类的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类。但是嵌套类可以包含所有这些东西。

 

至于为什么使用内部类而不是直接创建一个新的外部类,可以从两个方面说明:

1)某个类只和外部类有联系,不希望其他的类和该类关联,那么可以把该类设计为内部类

2)同一个外部类含有多个内部类,而这些内部类可以各自继承不同的类,从而达到多继承的一种另类实现。

posted on 2022-05-20 11:14  我欲皆真  阅读(152)  评论(0编辑  收藏  举报

导航