内部类的好处及其种类

在一个类中可以声明类,叫做内部类。
作用: 实现了更好的封装,普通类的访问修饰符不能为private或者protected,而内部类可以,我们声明一个内部类声明为private时,只有外部类可以访问,更好的实现了隐藏内部类。

内部类可以继承或者实现其他类或者接口,而不受外部类的影响。内部类可以访问外部类的字段和方法,即使使用private修饰的,相反外部类不能直接访问内部类的成员。

可分为:成员内部类、局部内部类、匿名内部类、静态内部类。

  • 成员内部类:

1成员内部类可以看成是外部类的一个成员 2在成员内部类中无法声明静态成员,static final字段是个例外。我们知道加载类时,会先初始化静态成员,如果成员内部类有静态成员,那么内部类就会在外部类之前生成,而内部类是为外部类服务的,内部类在外部类之前就生成可能会脱离掌控。 3在实例化成员内部类时,成员内部类会持有一个外部类当前对象的引用,这样在成员内部类中就可以直接访问外部类的成员,即使是private修饰的。
《内部类的好处及其种类》

  • 局部内部类

1局部内部类的使用和成员内部类的使用基本一致,只是局部内部类定义在外部类的方法中,就像局部变量一样,并不是外部类的成员。 2局部内部类在方法外是无法访问到的,但它的实例可以从方法中返回 3局部内部类也可以访问所在方法的局部变量、方法参数等,限制是局部变量或方法参数只有在声明为final时才能被访问。
《内部类的好处及其种类》

  • 匿名内部类

可以把匿名内部类想象成是没有类名的局部内部类,匿名内部类有以下特点。
1、匿名内部类不能有构造器,匿名内部类没有类名,肯定无法声明构造器。
2、匿名内部类必须继承或实现一个接口,指定给new的类型为匿名类的超类型,匿名类不能有显示的extends或implements子句,也不能有任何修饰符。
3、匿名内部类和成员内部类、局部内部类一样,也不能声明静态成员。

《内部类的好处及其种类》

  • 静态内部类

也称为嵌套类,声明它时需要用static修饰符,静态内部类不同于前三种内部类,静态内部类不会持有外部类当前对象的引用,所以在静态内部类中无法访问外部类的非静态成员,可以这么说,静态内部类不依赖于外部类。

《内部类的好处及其种类》

    原文作者:shahuhubao
    原文地址: https://blog.csdn.net/shahuhubao/article/details/80483651
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞