00:00
在后边呢,我们提到这个叫内部类,那内部类的话呢,从重要性上来讲,跟这两个呢就差多了啊,跟这个final比呢,也是差一档,就是这块呢,咱们用的还是要少一些的,呃,所以这块呢,其实嗯,从这个这个这个就是功利点讲,从笔试面试角度来讲,顶多也就笔试的时候考你一两道,呃,然后面试的时候基本上也都不会去问的,这个属于比较功利的,就是为了笔试面试来说了啊,你要从这个咱们工作上来讲的话呢,咱们自己去定义内部类的机会其实也比较少,也比较少啊,但不是说没有是可以有的,可以有的话呢,无外乎就是我这定义个类,我这又定个类,我呢没有想到把它定义成内部了,我就放到外部了,放到外部其实也可以。对吧,你比如说这是一个人,这呢是这个大脑。我就把这个类呢,我定义成外边了,其实呢,不影响你用,你就在这里边可能声明一个这个大脑的一个属性,它俩呢之间是有关联关系的,也可以。
01:00
只不过呢,就是你要是讲的话,你说这个大脑呢,你外边别的类也不用,那你为什么不把它定义成一个内部类啊,你说啊,定义成内部类也可以,也就仅此而已,也不是说非得我要把这个就得是定义到内部,定义到外部,它就错了,不是的。不是的,所以有时候我们去定义的时候呢,可能就没有想着说,哎,我把这个整成一个内部类了,我就给整到外边了,哎有可能会出现这样的情况,所以说呢,这个内部类呢,咱们用的频率呢,就会低一些,这是其一,其二的话呢,就是我们讲它的意义在哪呢?就后边我们看到这个API的话呢,人家有好多是有内部类的。哎,人家是有内部类,因为人家设计的时候呢,就要更加的标准规则一些,说有一些类呢,确实外边用不着,那我就定义在内部,就像咱们昨天看到这个TY这。说Internet咱们内部提供了一个缓存,那这个缓存的这个in这个数组,呃,我们是用一个静态的内部类来表示的,那你在外边显然用不着啊,不就是跟in inter相关吗?所以我就定义到里边了,这个当我们看到人家这个结构的时候呢,诶你知道呢,哦,并不稀奇啊,这个是可以定义个内部类的,具体用的话呢,咱们下边这不讲一些知识点,怎么造对象啊,怎么去调你这个外部类的结构啊,是吧?哎这样的一些问题。
02:15
好,那么具体的这块呢,展开的内容看看都有哪些,大家呢,就熟悉一下就行。首先什么叫累不累?这很简单啊,就允许在一个类里边又定一个类,这就叫做内部类。哎,这个很简单了,那么内部类的一个分类,对先呢是叫成员内部类和局部内部类,然后呢,就是跟属性跟这个变量一样啊,你考虑变量就行,哎这样子的,然后这个成员这部类呢,分成静态非静态这个小框又没有了,然后呢,这个局部内部类的话呢,就是方法内,代码框内,构造题内,这都算了,但一般呢,咱们要写的话呢,也是方法内,哎这这基本上都不会的啊,下面的话呢,我们关于这个叫成现内部类的一个理解,一个理解的话呢,咱们这边也说了这两方面,诶CTRLC一下。
03:16
哎,这个关于他的一个理解。嗯,这个我把把它变小一点啊。诶保存一下就是一方面呢,成员内部类呢,他是你外部类的一个成员了,那他有哪些可以体现的东西,另外呢,毕竟你还是一个类嘛,那那你又体现为哪些类一些信息,所以这个呢,一说呢,大家其实都比较好理解一些,包括呢,你像我们这个类,如果你这个内部类是个静态的,一里边呢,你要想用web类这个结构是不是也只能用静态的呀。是不是是不是很合理啊,你这是外部类,这是这个内部类,你内部类你这是个static的,我想用we部类的这些属性,属性呢是不是也得用静态的,对非静态的这不就不能用了,像这些点的话呢,都是基于咱们已经学过的一些内容了,所以从这个角度来看呢,这块其实不算是这个新的知识了,只是你新建了个东西,就是来在一个类里边可以再定一个类,就像咱们前面讲说这是个for循环,里边呢还可以定一个for循环叫签到了,当时咱们也说过说这谈不上说是什么新知识点了,只是说呢,这个东西呢,大家没有见过啊,只是告诉你说里边呢还可以再定一个该运行该怎么整,还按照原来讲的那个规则来就行了,这也是一样,原来讲过的静态里边不能叫非静态的那个规则仍然适用啊就可以了,所以不用这里边我们去研究那么细,大家你自己写的时候呢,出现问题了,你去分析,分析的时候呢,用咱们前面讲的这些知识去分析就OK了。
04:43
嗯,行,这呢是关于这个,呃,成员内部类,我们这样的一个说明,好这就过了,然后下边呢,就是关于成员内部类落地的话呢,我们需要关注的这个知识点或者代码,就第一个就是如何去创建这个静态非静态的对象,这个咱们考试是不是考了,诶这个呢,就是这样子的,诶这个我就把主要的这个粘过来了,到到这啊CTRLC呃,这个方法我就不要了啊。
05:18
诶错误的错误的也可以留一下吧,这个呢,下边是这个正确的CTRLS行,那这呢就是person是web类,Dog和这个bird呢,都是内部类,它是一个非静态的啊,这个我在这写一下非静态的bird类部类的事例,这个创建静态的这个dog累不累它的一个实例,好这呢是我们说的这个事儿啊,大家关注一下,然后在下面的话呢,就涉及到我这个内部类里边呢,我怎么去调这个外部类的这个结构,这个咱们以这个属性为例,因为属性呢会出现这个透明的啊,那其实大家呢,主要关注的也就是这个board,这里边咱们写的这个叫display这个方法,这个我把这个核心的代码呢拿一下,在这个外面呢,咱们定义了一个person person里边呢,有一个也是一个name,或者往外放一个。
06:18
然后在这后边呢,加一个大括号包一下它行,这里边的这个我就不要了,这都不要了,就保留这个最核心的这个信息行,就看这块就可以了,这呢是我们一个外部类,这是外部类的一个属性,这是一个内部类,然后内部类里边呢,我们定义了一个属性,然后还有一个方法,方法里边还有一个行参,这几个名怎么去区分啊,如果说呢,我们外部类里边假设在这咱们写了一个public,咱不是也写了一个叫一的方法,这是一个一的方法了,然后的话呢,我们在这个内部类的方法里边,如果我们想去调这个eat方法。
07:03
第二一的方法,其实你直接这样写,就是如果你这个内部类没有这个同名的方法的话呢,同名同参数的方法,其实直接写也OK,相当于这时候呢,还是做了一个省略,就是我们这里边p.C点的一个省略了。就是说咱们说的这个事儿呢,都是说你要是有重名的时候的一个调用,就像咱们前面讲说这次修饰属性,很多时候我们也都省略了,但你跟邢台名一样了,那就别省了,哎,就这个意思。行,这呢照样的,也可以这样去调啊,没问题了,这大家注意一下,然后再下边关于局部内部类的一个使用。啊,就是关于这个成员的呢,就完事了,局部内部类呢,我们专门又写了个这个代码,写这个代码就是后边咱们要是用的话呢,像这种写个写个word里边呢,写一个类,然后里边做一些操作,其实这种用的比较少,通常呢,我们都是哎让他返回一个,诶某一个接口或者是副类的一个对象。
08:03
某一个接口或者负类的对象,在这呢,里边你得去提供这个接口或者是这个抽哎,这个接口或者抽象类的对象,那你里边呢,得需要去提供这个接口或者是抽象类的一个子类,或者叫实现类。那那这样呢,自然而然的,它就是一个内部内了,所以它的一个典型呢,就是这样的一个情况。来,CTRLC下。你看这呢,就咱们说的这叫局部内部类这样的一个问题啊。好,这呢,咱们就把这个事儿说清楚了,说清楚以后呢,咱们这个稍后呢,等一下还可以再去举一个关于局部内部的一个例子,哎,让大家再稍微再去体会一下,这里边儿一个事情,就是涉及到一个叫哎注意点这样的一个问题啊,然后呢,再做一个整体的一个总结上啊总结再提到一个事情。哎,整体总结提到的事情就是咱们呢,现在写的都叫内部类了,不管你是成员也好,还是这个局部的也好啊,它都是属于我们叫类类,然后的话呢,我们说这个类咱们写了一个Java源文件,我这写个类就写个类,写了两个类,咱们编译以后。
09:16
是不是这块是不是生成个自解码文件,这是不是也会啊,诶自页文件呢,就是这一个这一个,然后点class.class这个名就是你的类名,那现在的话呢,如果我这个类里边呢,有一个内部类类部类,你说我这个编以后。因为人家是一个类嘛,他要是个类的话呢,按说诶是不是也应该有个自解码文件啊,对吧?哎,那这个时候呢,我们就看一下说诶这个会不会生成自写码文件呢?说会的,那长什么样子呢?长什么样子,咱们这是J15,你找一下这个navigator,咱找这个J15B com哈,咱们写到这了,大家看。我们这个累不累。
10:04
你就看这个word跟dog吧,咱们这呢叫成员内部类,你看是不是以这样的格式啊,也就是说呢,咱们这个内部类的话呢,它也是会生成对应的class文件的,但是的话呢,因为人家是内部的,所以它前面呢会先指明你这个是外部这个类。哎,外部的这类,然后这个AABCC这个咱们是定义的,这里边的成员局部内部类。这我在这个方法里边,代码块里边,这个构造器里边写的ABCC,你看它呢,也给生成了对吧,只不过生成的时候你会发现稍微有点特别,就是它这里边写一个一是吧。这是干啥的?一的主要原因是这样啊,就是你看我这个方法,我写的叫AA,我这个代码块,代码块里边你说你这能叫AA吗。是不是也可以啊,因为你这个局部内部类是不是只在你这里边有效,就像你定一个局部变量一样,我这个代码块我是不是也可以定一个跟你同名的,反正咱俩作用域是不是也没冲突啊,对的,那如果我这也叫AA的话呢,在这里边俩AA了,它就会区分一个叫EA,一个叫2A了啊也就这个意思,比如我这你看我写一个叫AA,我CTRLS保存一下你看。
11:26
对吧,仅此而已啊,也就这么一个事儿啊,总之的话呢,就是不管是咱们局部内部类还是成员内部类,在我们编译以后,都会生成相应的这个解码文件啊,局部内部类啊,在编译以后,这个我们说都会生成这个字解码文件这个格式。这个格式呢,稍有区别,这个成员内部类,它呢是这个叫外部类,然后有一个Dollar符,然后内部类名,哎点儿点二克拉,这呢,对于我们叫呈现内部类,然后局部内部类,它呢也是叫外部类。
12:19
外部类,然后呢有一个倒乐符,这呢,它有一个一个一个一个数字了,啊这个数字呢,就是说你有可能会有多个嘛,数字完了以后,这呢紧跟着是一个内部类名,然后还是一个第2CLASS,诶这样就OK了,你知道人家也是个类,所以也会生成对应的自解码文件,只不过呢得依赖于外部类,行,那这个注意点,一会呢,咱们过来呢,再稍微的给大家说一下。
我来说两句