内部类与无名内部类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内部类与无名内部类相关的知识,希望对你有一定的参考价值。

内部类:

  内部类是类中的类,内部类也属于类的一个成员。内部类分静态类和实例类,内部类也可以进行继承、实现接口等类可以做的操作。

 实例类:

技术分享


内部类也是类中成员,也有静态和实例的区分,所以实例的内部类实际上相当于一个实例成员,要注意的是:实例的内部类不可以写静态的成员。实例内部类基本可以对外类的所有成员进行访问:

技术分享


因为实例成员要在new对象时才会分配内存,所以在外类需要构建实例内部类的对象时,必须先得构建加载外类的对象来构建实例内部类的对象。例如:

技术分享


静态内部类:

    静态内部类就像类的静态成员一样,使用static关键字声明。静态内部类不可以对外类或其他类的实例成员进行访问,静态内部类也是像静态成员一样在类加载时就加载分配内存,所以不需要创建外类的对象就可以构建静态内部类的对象。例如:

技术分享


内部类可以做类可以做的事情,例如继承父类实现接口等:

技术分享


内部接口:

  可以在类中声明一个内部接口,这个接口可以被类实现。与普通接口一样唯一的区别就是申请在内部。例如:

技术分享



内部抽象类:

  可以在类中声明一个内部抽象类,普通抽象类和纯抽象类都可以,这个抽象类可以被子类继承。与普通抽象类一样唯一的区别就是申请在内部。例如:

技术分享


内部类会不会产生class文件呢?:

  只要是声明的是类都会产生一个class文件:

技术分享

技术分享

会产生图片中这种命名格式的class文件:Five$A.class=外类名$内部类名.class



无名内部类:

    申请一个无名内部类的话,这个类会自动继承于外类,可以重写父类的方法,无名内部类可以写在main方法内,但是不可以写静态成员。例如:

技术分享


这种写法也是申请一个无名内部类:

技术分享


还可以声明一个自动继承别的类的无名内部类:

技术分享


无名内部类也是会产生一个class文件:

技术分享

会产生图片中这种命名格式的class文件:Five$1.class=外类名$无名内部类名(用数字表示).class


本文出自 “12831981” 博客,请务必保留此出处http://12841981.blog.51cto.com/12831981/1974346

以上是关于内部类与无名内部类的主要内容,如果未能解决你的问题,请参考以下文章

内部类与匿名内部类

java的内部类与匿名内部类

Java内部类与异常类

内部类与匿名内部类

外部类与内部类的访问

kotlin内部类与嵌套类