我是靠谱客的博主 忧郁服饰,这篇文章主要介绍静态内部类和非静态内部类的比较,现在分享给大家,希望可以做个参考。

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

静态内部类只能访问外部类的静态成员和静态方法

非静态内部类不管是静态方法还是非静态方法都可以在非静态内部类中访问

静态内部类和非静态内部类主要的不同:

(1)静态内部类不依赖于外部类实例而被实例化,但非静态内部类需要在外部类实例化后才可以被实例化

(2)静态内部类不需要持有外部类的引用。但非静态内部类需要持有对外部类的引用

(3)静态内部类不能访问外部类的非静态成员变量和非静态方法。他只能访问外部类的静态成员和静态方法,非静态内部类能够访问外部类的静态和非静态成员和方法

扩展:内部类都有哪些?

有四种:静态内部类、非静态内部类、局部内部类、匿名内部类

3.局部内部类:在外部类的方法中定义的类,其作用的范围是所在的方法内。他不能被public、private、protected来修饰。他只能访问方法中定义的final类型的局部变量。

4.匿名内部类:是一种没有类名的内部类。

需要注意的是:

1、匿名内部类一定是在new的后面,这个匿名内部类必须继承一个父类或实现一个接口

2、匿名内部类不能有构造函数

3、只能创建匿名内部类的一个实例

4、在Java8之前,如果匿名内部类需要访问外部类的局部变量,则必须用final修饰外部类的局部变量。在现在Java8已结取消了这个限制。

 

最后

以上就是忧郁服饰最近收集整理的关于静态内部类和非静态内部类的比较的全部内容,更多相关静态内部类和非静态内部类内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部