2019-02-01——Java 内部类

1. 静态内部类和成员内部类的用法?
2. 内部类的修饰符有什么用?

关于内部类的分类

内部类广义上可分为四种:成员内部类,局部内部类,静态内部类和匿名内部类

1.1成员内部类

(1)成员内部类可以无条件的访问外部类的属性和方法,无论是私有的还是公开的,静态的还是非静态的。
(2)当成员内部类的属性与外部类同名时访问的是内部类的属性,如果想要访问外部的属性需要使用——外部类.this.成员属性。
(3)外部类想要访问内部类的属性需要先持有一个内部类的实例,通过这个实例来访问。
(4)成员内部类是依附于外部类存在的,也就是说要想创建一个成员内部类需要先创建一个外部类的对象——外部类.内部类 内部类对象 = 外部类对象.new 内部类();
(5)内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限。
(6)成员内部类持有了一个外部类的对象的引用

1.2局部内部类

(1)局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内。
(2)局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的。
(3)局部内部类只能访问外部类的final属性

1.3匿名内部类

(1)匿名内部类是唯一一种没有构造器的类。正因为其没有构造器,所以匿名内部类的使用范围非常有限,大部分匿名内部类用于接口回调。
(2)匿名内部类只能访问外部类的final属性
(3)只能使用一次,创建实例之后,类定义会立即消失(想要多次使用就要用到反射的知识了)
(4)可以定义代码块,用于实例的初始化,但是不能定义静态代码块。

1.4静态内部类

(1)静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。
(2)静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非static成员变量或者方法,这点很好理解,因为在没有外部类的对象的情况下,可以创建静态内部类的对象,如果允许访问外部类的非static成员就会产生矛盾,因为外部类的非static成员必须依附于具体的对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java 内部类 分四种:成员内部类、局部内部类、静态内部类和匿名内部类。 1、成员内部类: 即作为外部类的一个成...
    ikaroskun阅读 5,066评论 0 13
  • 问:Java 常见的内部类有哪几种,简单说说其特征? 答:静态内部类、成员内部类、方法内部类(局部内部类)、匿名内...
    Little丶Jerry阅读 6,438评论 0 1
  • 嵌套类和内部类 大部分时候,类被定义成一个独立的程序单元。在某些情况下,也会把一个类放在另一个类的内部定义,这个定...
    凌寒天下独自舞阅读 3,669评论 0 0
  • 序言: 为什么会写这份东西?我也在问我自己。老实说,我觉得自己的思想也来越退化了,在每一天的时间里我除去工...
    冉大侠阅读 3,641评论 0 2
  • 喝喝更健康!
    神憩闲居阅读 1,553评论 0 1

友情链接更多精彩内容