面向对象高级部分---内部类,什么是内部类,内部类的划分,为什么要用内部类?

后两篇已更,第二篇:内部类之局部内部类(内部类合集,第二篇,原理+细节)-CSDN博客

第三篇:内部类之匿名内部类(内部类合集,第三篇,原理+细节+实现)-CSDN博客

内部类!这是面向对象编程中最重要的部分,也是Java进阶的第一个难点,主要体现在源码上,如果有朋友读过一些Java类的源码就会发现,源码中大量使用内部类,如果你不懂,那看起来是相当困难的,尤其是一些主流框架和开源项目,都大量使用内部类,而这些往往也是面试中的重点,所以,这部分一定要非常重视!!!

在本篇文章中难免会引出一些概念和理论,我会尽可能去解释,但如果实在不理解,在后面的文章我会结合代码来进行解释,请相信自己,这部分你一定可以拿下来!

因为篇幅原因,我会分为几部分来阐述,每个部分都有很详细的讲解,希望诸位能够在看完后梳理出自己的知识框架!在本文中主要介绍:什么是内部类?内部类如何划分?为什么要用内部类?

首先,我们先要搞清楚什么是内部类?

在下方代码演示中,请各位一定要看清楚这几个类的位置,在一个类的内部嵌套一个类,被嵌套的类才称为内部类!内部类是类的五大成员的最后一个(属性,方法,构造器,代码块,内部类)。

内部类,不管怎么说,它也是类,只是因为所处的位置比较特殊,因此称为内部类,但普通类所有的五大成员,内部类都有,甚至可以在内部类嵌套内部类。一定要记住,内部类也是类!但把它既然放在类的内部,肯定就有它的特殊之处---可以访问外部类的私有属性、私有方法,这是内部类最重要的特性之一!

class Outer{//外部类
    
    class Inner{//内部类

    }
}

class other{//其他类

}

内部类的分类,如何分类,根据什么分类?

内部类的分类是根据定义在外部类的哪个位置来分类的(注意!是定义在外部类的哪个位置!)总共分为四种:

  1. 定义在外部类的局部位置(联想局部变量的位置,比如方法体内)
    • 局部内部类(有类名)
    • 匿名内部类(无类名,重点!!!源码中非常多!)

          结论: 有类名,局部内部类!无类名,匿名内部类!

  1. 定义在外部类的成员位置上(联想成员变量的位置)
    • 成员内部类(未使用static修饰)
    • 静态内部类(使用static修饰)

            结论:有static 成员内部类,无static 静态内部类!

为什么要使用内部类?

其实这个问题很是既简单又复杂,使用内部类就是一个目的---简化代码冗余。但这句话对初学者不太友好需要一定积累,学到这里,我相信各位都已经明白正常开发我们的类需要去怎么写,但有一个问题,Java是面向对象的,如果我们项目做的比较大,势必要建立很多实体类,想象一下,打开一个包下面出现几百个类,这是一个很恐怖的事情,而内部类可以减少这种情况发生,因为在实际情况种,我们有一些类和其他类的关联性并不强并且不会在其他地方使用,因此我们就可以把这种类定义为内部类,只在当前外部类(outer类)下去使用,这样的话,代码看起来既清晰又简洁。这就是我们为什么要使用内部类,知道了这个之后,我们也就清楚了在何时要去想到 使用内部类。并且在Java源码和框架底层中大量使用了内部类,这也是我们学习目的最重要的一个!

我尽可能的通过通俗易懂的语言去解答了这些问题,只有知道我们为什么要去学习内部类,如何去使用,何时去使用,学起来才不会迷茫。

往后的几篇中,我会逐个介绍每种内部类,感谢点赞和关注!

第二篇:内部类之局部内部类(内部类合集,第二篇,原理+细节)-CSDN博客

你可能感兴趣的:(java,开发语言)