00:00
那么咱们这个第七章呢,就告一段落了啊,然后接下来呢,我们对这一章呢,做一个复习啊,打开我们这个第三个啊复习和企业真题啊,我们选这个第七章。好,那么首先的话呢,针对咱们这一章内容啊,大家呃先捋一下啊,看我们这一章呢,主要涉及到哪些基本的点,诶第一个的话呢,我们上来先讲一个是这次关键字是吧。诶,第一个啊,这是关键字,它的一个使用。好,这呢,我们接着来看啊,第二个问题啊,下边我们就提到了一个面向对象的特征二啊。诶这个特征二呢,我们称为呢叫继承性好,那么接下来的话呢,这个点实际上呢,都是基于这个继承来的啊,比如说呢,我们首先提到一个叫诶方法的重。写是吧,啊,这个没问题啊,好放下来重写完了以后啊,下边我们就提了一个关键字,叫做super关键字的使用。诶,这是它啊,诶修完了以后呢,我们提了一个问题,叫做子类对象实例化的全过程。
01:00
呃,实例化的呃,全过程OK啊,像这些的话呢,都是基于我们这个继承性之后的啊好,那么再接下的话呢,我们提到一个叫面向对象的特征三。诶的特征三啊,这个呢叫多肽性,诶多肽性的话呢,其实也是基于我们继承性的,诶如果没有继承性的话呢,这个多肽性呢,也无从谈起啊好,那多肽完了以后呢,接着我们就讲了一个叫object这个类的一个使用。好,那整个呢,咱们这一章的话呢,其实就讲了这样的几个知识点,那在这个过程当中呢,我们涉及到了一个呃,项目的问题是吧,这个我单独的写到这儿了,这个我们对应的叫这个管理系统啊,啊回过来就是我们的。嗯,找到这儿啊,诶对应的第二个啊,叫拼电商客户管理系统。哎,这是我们的这个项目二啊。哎拼电商,哎客户。管理系统。好,这呢就是整个我们这样的几个内容啊,呃,这些内容里边的话呢,咱们前面也讲面向对象的时候,我提了一下哈,说面向对象这块呢,基本上没有什么说大家了解一下啊,差不多呢,都算是重点啊,那对于我们这个第七章来讲呢,相较于第六章和第八章啊,这一章的内容呢,算是偏少一些的哈,诶如果呢,我们要挑一个说哪块不算多重要,诶其实这块呢,呃,第五个点啊,我们可以呢,作为一个熟悉就可以了。
02:27
啊,然后第八个呢,这个项目呢,这个咱不算啊,项目的话呢,前面也提到过了,这里边儿没有什么新的知识点,OK,主要呢,就是大家呢练一下这个代码啊,量比较大的时候呢,这个场景是什么样子的啊。好,那我们这块呢,就从上往下捋,除了这个熟悉之外呢,剩下的都算是重点内容啊,第一个这次关键字的使用。啊,其实这个大家呢,现在回忆一下,这次呢,其实不是特别难理解啊。啊,主要呢,我们关注一下就是哎,它能修饰什么结构,什么厂家去用就可以了,首先这个这次的话呢,诶,我们关键的先关注一下它可以调用的结构啊。
03:03
啊,这个呢,我们提到了有这个属性。方法。诶,还有这个,诶构造器的问题啊,那么这块的话呢,我们可以加个分号啊,前面呢算是一个场景啊,最后呢,调构造器这呢算是一个场景啊。好,那么这里边儿的话呢,我们调用属性也好,调用方法也好啊,可能呢,是在一个方法当中去调的,也可能是在一个构造器里边去调的啊,所以呢,这个这次呢,我们在调用属性调研方法的时候呢,诶给它呢,就相当于有一个理解啊。诶,这个写一下啊,调用属性或者是方法时。那这个我们就来理解为叫当前对象。啊,或者呢,叫当前正在创建的对象。啊,这个呢是谁取决于呢,就是你是在方法里调,还是在构造器里边掉了。啊,这个对应的代码呢,咱们也都比较呃清楚了哈,诶你比如说诶,我就简单这样一写了啊,就是比如说我们public。
04:01
哎,这来个word叫set一个name啊,这呢词针形的一个name,哎,现在这个里边调的这属于方法里了啊,我们写个this name等于诶后边这个是这个name。这呢是一个。账号代码了啊。好,那么前面这一块的话呢,就我们给这次呢修饰了一下,这呢表示就是属性了,像这个呢,咱们就翻译成了叫做当前对象了。哎,在方法里边呢,都理解成叫当前对象,那么如果你要是在构造器里边啊,比如说我们这儿呢,是一个person类了。哎,死类型的,还是这个name。哎,这块我们也是这点name呢,拿这个name呢去做的赋值。诶,此时这个这次呢,咱们就翻译成了叫当前正在创建的对象了。啊,就是你像当前对象呢,好像呃,毕竟这个对象还没创建完成吧,啊就这个意思啊好,那么关于呢,我们调属性调方法这个事儿呢,其实比较简单啊,诶大家呢,主要就关注呢,在什么场景下,我们必须要出现这次拉,其实就是我这块列的这个场景。啊,也就是说呢,当。哎,当那个属性名是吧,哎和我们这个行参名。
05:04
哎,同名时。哎,同名十是吧,诶必须使用这呢来区分。哎,这就可以了啊。这个呢,是我们说必须要调属性,这个时候呢,我们要用的这样的一个Z,关于方法这块的话呢,通常我们就全都省略这个Z了,OK,然后呢,下边这个呢,就提到这个调构造器的这个事儿啊,这块的话呢,我们提到相关的一些点啊,需要大家去关注的,那啊关注的点呢,就是说这个这次呃,行参。啊列表啊,这样的这个方式呢,表示呢调用。哎,当前。啊类中啊,其他的啊,重载的口罩期。诶,这个大家呢,注意这个问题就行了啊,然后呢,我们在讲解这个知识点的时候呢,就提到过一些细节啊,比如说呃,这个呢,你得放到构造器的首行。是吧,哎,然后呢,一个类当中如果有N个构造器啊,最多有N减一个,使用了这次性能列表的方式。啊,这个在使用的时候呢,我们肯定不能出现的这种环的这种场景啊,诶我掉了你了,你就不能再吊我了。
06:06
哎,就这样的这个情况啊,哎,那我们后边来讲了这个super了,其实上我们知道这个位置呢,如果你要调这次这个构造器了,这个构造器呢,不能再调你了,它是不是一定会去调super了。哎,对的啊,其实这样呢就可以了啊,整体使用的话呢,其实也不太难啊好这个呢,就我们说这个这次了,然后下边呢,就提到说这个叫继承性。啊,继承性跟我们下边这个叫多态性,这个呢,就是面向对象的另外的两个特性啊,这两个特性的话呢,应该讲继承性呢,其实不太难。啊,通常呢,会发现呢,大家在谈到对这三个特征理解的时候呢,最好说的其实就是继承性。啊,其次的话呢,应该是封装性啊,最后呢,应该是这个多态性。啊OK,那关于这个封装性的话呢,咱们前面也讲过了啊,大家怎么去说啊,会显得比较高大上一点,显得你整个理解呢,是比较深入的,这个咱们已经呃上一章的时候都复习过了啊,那么关于继承性这块呢,怎么去说明呢?
07:04
啊,如果呢,是从这个笔试面试离异的角度来讲,大家呢,主要呢,就要说清楚这个继承性的好处啊。诶把这个事儿呢,要能够说清楚啊,咱们当时讲这个竞争性好处的时候呢,怎么说的呀。啊,减少了表代码的这个冗余是吧。哎哎,冗余啊。哎,加柔鱼呢,同时呢,就相当于是提高了这个复用性呗。就相当于呢,你在父类里边写的那个代码呢,子类呢,就都可以拿回来去用,你就写了一份,这不复用性就会更高吗。啊,这是一个点哈,哎,另外的话呢。哎,对,提高了这个扩展性。诶这个怎么讲呢,就是你后续呢,如果还有其他新的这个类要创建,而且呢,你发现呢,就是当前已有的这个体系当中,父类的这个子类的这种情况了,你直接呢,让你这个新创建这个类呢,去继承我们的父类啊这立马的一个功能呢,就实现了这种扩展了,包括的话呢,后续啊,我们有整个这样的一个继承这样的一个关系了,诶如果后续的话呢,你需要扩展功能,只需要呢,在父类里边呢,我们加相关的这个方法,一加完以后,所有的子类呢,全都自动有了。
08:11
哎,这个就是功能扩展呢,会更加的方便。啊,不需要呢,在每个子类里边再去呃提供一份了啊好,这叫提高了扩展性,然后另外呢,我们再提一下,那就是为呃多肽的使用提供了前提。呃,前提啊,呃,也就是说呢,没有气正性,那我们就无从谈起这个多态性啊,因为我们要用这个叫子类对象的多态性,OK。啊,就是如果从那个呃,笔试面试的角度谈你对它的理解的时候呢,大家呢,要能够抛出来它的一个好处。诶说完它之后呢,呃,再提一个问题,那就是咱们Java当中这个继承性的一个特点啊。呃,记忆成性的这个哎,特点。那么这个特点的话呢,注意咱们现在呢,讲的都是类的集成型。
09:01
啊,后边我们下一章还要讲接口,接口跟接口之间呢,也是继承的关系。那我们先来说类这块的特点哈,那么类这块呢,表现出来的继承性呢,就是单继承性。啊,所以这块我们要理解啊,叫类的单继承性,这呢我们可以理解成呢,是我们继承里边在类这块体现上的一个叫局限性啊。咱就不说缺点了。啊说缺点呢,好像感觉不大好似的是吧,局限性啊,规定呢,就是类要单继成的。啊,那么呃,现在呢,大家再来看一看,我们为什么这块非要要加这样的一个要求呢。你让这个类的话呢,它继承好几个父类,这不是一下子功能就实现一个快速的扩展吗?为什么非得要单继承呢。不能为了继承而继承,那也不矛盾,你比如说我们有具体的一个假设,一个小猫是吧,说猫呢,它呃,ISA animal,诶这个没问题是吧,这个你可以继承animal了是吧?猫呢,又是一个宠物是吧?我再让他去继承1PET宠物。
10:03
呃,或者他还是一个什么,只要呢意这种满族关系,那我就让你去继承了。这个行不行。嗯。不知道用哪个啊,刚才有同学提到这样的一个点哈,刚才假设你看,比如说我让猫呢,继承于这两个负类了哈,刚才我这里边假设有个E的方法。然后呢,在这个pad里边呢,也有个一的方法,而且这两个声明啊,咱们可以理解成就全都一样。然后呢,在这个猫这个类当中,如果猫类呢,重写了一条方法了,还好说,因为你相当于呢,既看作是对它的重写,又看作是对它的重写啊,那你这块用呢,肯定没问题是吧。啊,那你如果说呢,没有重写这方法的时候呢,我们要是在这个子类的方法里边去用的话啊,他提到说就有冲突了,不知道到底用的是哪个负类的是吧。诶,这个点的话呢,提的是挺好的,这个问题的话呢,我们在下一章讲到接口的时候啊,也会有类似的这种场景的问题的出现。
11:05
但是呢,接口跟接口之间呢。就是。多,呃继承的是吧,包括类和接口之间还可以多实现啊,就是我们也会遇到类似的问题,只不过呢,就遇到这个问题之后呢,你下边想着办法去解决就可以了,所以这个点的话呢,呃,可以理解成是一个原因,但是呢,它一定不是最主要的原因。啊,只能说呢,你有多集成以后呢,顺带着有一个问题是吧,需要去解决的哈,主要原因的话呢,还是基于这样的场景哈,当然呢,这个我们这个解释呢,也都算是一种,呃,理解了啊,有的语言呢,是可以多继承的啊,只不过咱们Java没有选择多继承而已啊,在Java这个单继承的话,主要涉及到啊,你看咱们当时讲课为什么没说呢?因为我们当时还没有说此类对象实例化全过程啊。现在我们已经讲完了,讲完以后啊呢,你也知道了,当我们去创建这个子类对象的时候呢,我们说呢,一定直接或间接的会调用它的负类的构造器是吧。啊,它呢,也有一个负类,是不是也会直接或间接的调用它的负类的构造器,整个呢,这就一串下来。
12:04
所以呢,我们表现为呢,就是继承性啊,此类呢,你就可以调用父类中的这个属性跟方法了。但是如果你要有多个负类的话呢,这不就麻烦了吗?哎,我这个时候掉休克,休克到底是哪一个呢。还是说先调哪个后调哪个呢?这不就没法完全去指定这个事儿了吗?哎,我们现在就只有一个弗雷,就是你调就是调这个,这个呢,你要有弗雷还就是调这个,而且每次我们都还会去调到我。你要说有多个福类的话呢,首先这就没法先加载谁后加载谁的问题,再者的话呢,大家最终目的不又又都。哎,这个继承object,那这块怎么说你这块呢,又到他了,他这块也到它这不就有点乱了嘛,整个这个继承的这个结构呢,就加载的先后顺序啊,就得完全的得推导重来啊。啊,这个呢,整个有悖于我们类的加载的这样完整一个过程,所以这块呢就没法推进了啊。诶,所以Java这块呢,就是一个单继征性,当然你可能会说这是一个局限性,这是一个缺点,那怎么办呢。啊,这个咱们啊,先在这说一下啊,后续啊,我们通过什么呀。
13:05
哎,通过呢叫类啊实现。呃,接口的方式啊,然后呢,相当于是一定程度上啊,来缓解这个局限性。啊,后续我们通过类啊实现接口的这个方式。啊来这个算是叫解决吧,哎,这个单继承的这个局限性啊。就相当于呢,我们可以呢,让类去实现接口,这个接口里边有相应的功能,哎,而且呢,我们还可以多实现,你可以实现好多的接口,哎,来实现你功能的一个扩展,这个是OK的啊。好,这呢是我们说的这个集成的这样一个特点了。实际上呢,主要我们要表达的呢,就是这个事儿啊,其次的这个呢,比如说呃,支持多层继承。是吧,呃,一个父类,哎,可以声明多个子类,哎,这个都是很好理解的啊,哎,多层继承呢,就是我们说的这样的一个层次的这种关系了,哎,子类呢,还可以再有子类,子类还可以再有子类啊,这叫多层继承啊,一个父类呢,可以有多个子类啊,这个呢就是这样一个关系。
14:07
OK啊好,那么从这个呃,笔试面试的这个角度谈谈你对继承性的理解,其实说到这儿呢,也就可以了,所以你会发现呢,其实不是特别难啊。那么从我们写代码的角度来讲的话呢,那最起码的一个基础。啊,基础问题就是大家呢,你得知道这个继承他的怎么去写是吧。啊,Extend,然后这样的一种格式啊,然后呢,以及呢,这个集成以后呢,从代码层面呢,表现出来这个特点是什么。啊,我们这块也提到了,就是相当于后续的这个理解了,哎,此类就获取了。哎,负类中。哎,声明的啊,全部的啊,属性方法。哎,这块一定要注意,你看我这边加了一个叫全部的。啊,虽然说你获取到了副类全部的属性和方法了,但是呢,不一定能直接掉。
15:01
哎,所以这个要明确啊呃,下一个点呢,就是可能。呃,受。呃,受这个诶封装性的影响是吧。不能直接调用。啊,这个呢大家清楚啊,在另外的话呢,就是此类你还可以扩展负类的功能,你自己呢,指定你特有的属性的方法是吧,这就完事了啊这个我就不往这写了,所以呢,从这个代码上来讲呢,大家要知道这个事儿,从这个笔试面试的角度来讲呢,诶知道这个事儿。就可以了,所以它呢,其实是比较好理解的啊。啊,这咱们就过了,然后下边这个呢叫方法的重写啊,这个呢,对应的英文呢叫over。Right是吧,哎,或者那叫over right就是纯是写的这个单词了啊。好,那么一提到这个问题的话呢,首先啊这块呢,我们就以一个面试题的方式呢去呈现了啊。啊,或者叫这个。咱们叫面试题,其实呢,就有时候把笔试题呢,就也都含在里边了啊方法的呃,重载与重写的区别是吧。
16:05
哎,这个问题啊,这个问题的话呢,其实诶里边呢,咱们也讲了啊,它俩没什么关系,就各自解释各自的就可以了啊,诶关于我们这个重写这块呢,首先你得明确它的一个前提是。方法呢,我我这块也顺便稍微写是吧,重载啊这个呢,我就不多说了,你就记住那个两同一不同啊。诶行,这个呢,咱就过了啊,诶这块呢,咱们主要呢来说一下,这个叫重写啊一学校这个重写的话呢,首先你得知道一个大前提。对。哎,这个前提条件呢,得先有类的继承关系啊。哎,你要没有继承的话呢,这个重写就无从谈起了啊,那么在继承的前提下,哎,我们这块呢,说子类对父类中同名同参数的。嗯,方法的是不是一个覆盖啊。
17:01
付费或者叫复写是吧,这种操作呢,我们就称为它叫重写了。啊,具体的场景呢,大家也都很清楚啊,比如我们讲这个账户,诶这块呢,就是信用卡账户啊,账户里边有一个取钱的操作,呃,信用卡账户这块呢,呃,就把它呢给重写了,因为人家可以透支。啊这样啊好,这呢是一个几何图形,这呢是一个圆是一个矩形啊几何图形这块有求面积的方法,那我们呢,具体的这些啊子类我就可以呢,重写一下求面积的方法。啊,这个都是很好理解的啊,诶包括呢,我们前面提到说这是一个手机,手机这块呢,能显示来电号码,这呢是智能手机啊,技能于它的同时,诶他呢把这个方法就可以重写一下,除了显示号码之外呢,还可以显示这个比如头像啊等等的是吧,更丰富的一些信息啊这呢都是这种重写的概念。哎,在实际开发当中啊,这种场景呢,其实比较常见啊。好,后续的话呢,我们再进入到关于抽象类,关于接口,诶大家对这个重写的这个场景呢,会见得更多啊OK。
18:04
好,这个呢,其实也不难啊。这个呢,就是基于我们实际的需要,你需要重启了,那就重启,不需要你就不要重启了啊。好,接着的话呢,我们看这个叫super关键字的使用。他呢,也是基于咱们这个继承这样一个大前提。OK啊好,有了这个大前提以后啊,这块我们就引入了这样一个关键字,诶首先呢,关注一下super呢,可以调用的结构哈。啊,这个是什么呀。是不是也是属性方法。构造器诶对的啊好,那么其实跟这个这次呢,这块我们在讲的时候呢,就可以对照着大家去说了啊,因为这次呢,其实也是调这几个结构啊呃,主要区别点呢,这次是调它当前这个类的对象。啊而虚呢,调用的是哎负类的啊对,所以说这块我们关于这个,呃虚呢,它这个理解啊,你又翻译成了叫做。哎,负类的是吧。这样的就行了啊好,那么具体的话呢,关于super呢,它来调用。
19:01
呃,调用这个呃属性呃方法是吧,这呢算是呃这个一个维度的啊,然后接着呢,它来调用构造器。哎,这呢是一个事儿,哎,那么这个调的话呢,其实哎咱们也提到过哈,有些时候呢,就不用非得去加super了。呃,当然有一些场景呢,就必须要讲。哎,这就提到了什么场景必须要加,比如说什么时候我必须要加休克去表示掉负类的属性啊。对啊,这块就提到了,说哎,如果子父类中。哎,出现了叫同名的属性是吧?哎,那此时呢,呃,使用super。点啊这个的方式。哎,这个呢,表明调用的。对,调用的是诶负类的啊,调用的是诶副类中。生命的这个属性,当然了,这个大前提呢,是你得先有权限去调啊。
20:01
明儿我拿这个super点我去调了,傅雷中,人家写的是个private的,那你想调也调不了。咱们说的这些点呢,都是基于呢,你能访问的前提下啊。啊,这呢是我们必须要用的了啊,那如果说呢,这个呃,父类这里边呢,它叫内幕子类这块呢,根本也没有去额外的再定一个内幕了,那在这个子类的方法里边呢,呃,你现在想用这个内幕属性了,前提是你能它不是私有的啊,能直接用这种情况下呢,你这个前面休克点加不加都无所谓了。或者换句话说呢,我要是没加super点。对,其实它省略了这点是吧。只不过呢,就是他现在他。自己这个类里边找那部时候没找到啊,他就翻到父类这块去找的还是父类中的这一个。这是没问题的啊,咱们现在说呢,就是在这种场景下呢,是必须要用的啊好,那么方法这块呢。对,那如果说父类有个方法,子类也没重写,这呢,其实你也可以不用super了啊,哎,必须要用的话呢,就是子类重写了,哎,父类的方法。
21:04
啊,然后呢,在这个前提下呢,说呢,如果此类的这个方法中,这个没说这是你这个重写的方法啊,随便一个方法中啊,此类的任何一个方法中,呃,需要调用。负类被。哎,重写的这个方法时是吧,需要呢使用这个诶修点是吧,这个方式呢,去指明一下就可以了。行,这个呢,都相对来说叭较好理解,好那么下边呢,我们就提到这个super调用过道器的事儿啊,这块麻烦就麻烦在呢,就是它其实就涉及到我们此类对象实例化的这个全过程了。哎,细边掉构造器啊,这个我们都清楚啊,这个是调负类的构造器了。关键的话呢,大家要理解这样的一个事儿。什么事呢,就是在哎。在这个。子类的构造器中是吧。首行。首航的问题啊,因为我们不管是这次调构造器也好,还是虚克调构造器也好,这个都是提到了一个首行的问题啊,我说呀,在子类的构造器当中,首航呢,呃,要么使用了。
22:08
对,这次人呢叫哎行参哎列表。呃,要么呢,使用了它。哎,要么呢,就使用了。哎,修复形态里边。诶这个呢,我就不再多去说了哈,咱们把默认的这种行为呢,也理解成了你用super了,诶总结一下的话就说你构造系列首行不是出现this就出现super了。对,因为呢,你要么就是写他俩中的一个了,你要是我都没写,不好意思都没写,那就是super。哎,所以说呢,这个首航呢,不是他就是他。而且呢,他俩都要求放首航,所以呢,也只能是二选一。哎,这样个场景啊。好,呃,这呢是我们其实需要去关注的点,这个点的话呢,诶掌握它的目的什么呢?这个你就知道啊,咱们在这个此类对象实例化的过程当中啊,一定会啊,直接或间接的调用到浮力的构造器了。
23:09
啊,那么这个点呢,就是基于我们这个呢,你可以去做个解释了啊,那至于说呢,这个点你说我不是很理解啊,不理解的时候呢,其实也不影响你去理解super架构到期的事儿。啊,因为在代码中呢,你需要调了,那你就直接修复了一下,你就调一下构造器就完了啊至于说呢,你说是不是说一定会有这个或这个呢,好像也不太影响你写代码。但是影响的是这个事儿啊。行,那这个咱们就过了,其实真正代码上的话呢,其实也并不复杂啊呃,下边这个呢,就是子类对象实例化的全过程啊,这个呢,大家作为一个熟悉就行,它其实呢,不涉及到什么代码了啊呃,这个熟悉的话呢,我们是从两个角度来说的,第一个呢,是从这个呃结果上来说啊。实际上呢,这时候就是体现为继承性啊。就是说哎,我造了一个子类对象。啊,用了一个dog是吧?哎,这个子类对象创建完以后的话呢,我们在啊内存空间当中啊,你这个dog的这个实例啊,在站里边,这是堆里边啊这呢站里边呢,这个叫小D了,指向呢,你对空间你造的这个实打实的这个对象,这个对象里边呢,就包含着副类中的这些属性和你自己的属性。
24:17
啊,包括负类的负类啊都有啊。行,那就相当于呢,你能够去在权限允许的情况下调用这个属性,包括呢福利中的方法,所以这就体现为叫技能性了,那么我们这个从过程上来看啊。哎,从这个过程上来说呢,哎,就是我们要讲的这个事儿了,哎,我们提到了说子类啊调用。哎,构造器。创建对象时。是吧,哎,说一定会直接或间接的。来调用。代期还负类的构造期。呃,然后呢,以及啊,负类的负类的构造器,这个我就不写间接的构造器了啊,然后点点点是吧,来说直到呢。
25:07
哎,知道是吧,哎,调用到这个object,咱们也说了object啊,它的空参的这个构造器。为止啊,正因为呢,你调用过这些构造器,所以呢,我会把这些呃,副类中的这个属性也好,方法也好,帮你去加载了,进而你体现为继承性,你能直接掉了,因为内存中有了,有是因为我调过他们的构造器,加载过他们的结构。哎,就可以了啊行,那么关于这个子类对象实例化全过程呢,咱们其实呢,还有一些细节没有去谈,诶这呢就是我们后续的哈,比如说我们再去加载的过程当中,是先加载父类还是先加载子类呢。对,先加载负类,因为你看到我们在构造器的首行不是写这次就写super啊,就相当于你自己这一个类,如果有多个构造器的话呢,诶我通过这个构造器造对象,它呢上来就这了,那就先掉它,它呢,诶上来就super了,说先调这个了。
26:03
所以呢,我们在加载的时候呢,其实是从上往下这样的顺序去加载的。啊,这个事儿的话呢,我们,诶下一章上来呢,就讲一个叫呆的一个关键字,诶我们再去理解一下啊,它类的加载的一个顺序,这是其一,其二的话呢,就是我们在下一章的时候呢,还会讲一个结构叫做代码块。啊,在子类对象创建啊,子类呢,通过构造器创建对象的过程当中,实际上呢,还会涉及到一个代码块的一个执行的问题啊,诶等我们下一章讲完以后呢,把这个事儿呢,会充斥的更完整一些啊,大家理解呢也会更好一些啊,目前呢,这个主干已经出来了。啊,这就是我们说的第五个点啊,这个事儿大家只要理解就可以了,他没有对应的代码支持啊。好,那么在下边儿呢,就提到这个叫多肽性。好了,那么多态性你是怎么理解的?咱们就看成是一道面试题。啊,这个事儿怎么说。
27:03
是吧,哎,这个是怎么说啊,哎,这个多态性呢,首先你一上来建议呢,你就把这个多态性的这个咱叫定义也好是吧,先给它抛出来。哎,说我们Java中这个多态性呢,主要指的就是子类对象的多态性。啊,你看我这里说了一句话,我竟然说叫主要指的是。那似乎说呢,还有其他的吗。是吧,诶所以这块的话呢,关于这个多代性呢,我们一般呢,大家都是这样来认为的哈,诶这儿呢,我写一个他的一个呃。咱要定义的话呢,那就是先有一个叫广义上的。哎,广义上的一个理解啊,还有呢,就是一个狭义上的理解啊。什么叫狭义上的理解,什么叫广义上理解呢?咱们讲的叫子类对象的多态性,其实呢,算作是一个狭义上的理解啊,我就写到这儿。子类对象的,诶,多态性啊,那么什么叫广义上的理解呢?这也就是大家通常比如我们看一些面试题也好,或者说呃,你在企业当中大家理解也好,就是大家通常都这么理解的,就好比是呢,这三大特征在jdk Oracle官方的网站当中,人家没有提到说面向对象有三大特征。
28:18
哎,是咱们中国大家中国人是吧,咱们成员在学习的过程当中说,诶这里边儿封装技能多肽感觉像这个特征一样,那干脆呢,把它一抽出来,说咱们叫有三大特征吧,所以我们就都这样叫了。啊,那就相当于呢,大家达成一种共识啊,那么关于多态性这块呢,大家也达到一种共识,怎么着呢,就是一般呢,咱们说的多态性指的就是这个,所以这叫狭义上的理解啊,那么广义上的理解呢,一方面呢,还有它。啊,那么除了它之外呢,我们也把方法的这个重写的这种行为。哎,理解成了叫多肽性了。甚至说呢,有的地方呢,还把这个方法的重载哈。也理解成多态性了。但是我觉得这个重载的话呢。
29:01
呃,就是有的人会把它放进,有的人不放进去哈,甚至你看一些书,包括我也都看过,阿里出来的程序员,他们有的写了一些书里边呢,还把它给放进去了,但是我的感觉就是。就不适合放啊,为什么讲啊,你看我可以我这样加个分号吧,是吧,诶怎么叫多态性呢?其实呢,应该体现为这种编译和运营时这个状态不一致。啊,这种不一致性呢,其实就体现为这种多态的特性,或者叫一种动态的特性啊,而这种重载呢,其实它没有体现这种编译和运行的不一致性啊。因为呢,我们重载大家都知道在一个类当中啊,方法名哎都一样,但是它们形态列表不一样,那我们在调用的时候呢,你写的是int的参数,那就是这个方法,你写的是两个int参数,那就是这个方法,它其实不存在说呢。不确定了是吧。即使不确定呢,也是因为你这个方法呢,在此类当中给你重写了,然后你运行的时候发现执行的是此类一个方法了,这就叫重写了。跟你这个重载其实没啥关系是吧。
30:00
诶,但是呢,确实也有一些人,他把这个给归进去了,大家知道怎么回事就行了啊,我建议呢,你在面试当中,如果说说张亚中这个多态性指的是什么呢?我建议呢,你就说这个就行。但是你知道有些人呢,他会把这个呢,这种其实是一种静态绑定的场景啊,他也换算作是这个多态了,他说呢,就你看方法名一样是吧,呃,形态里表不一样,表现出来了多种形态。也就这么一听就完了是吧,哎这块呢,才真正体现的就是,哎我们这个位置啊,你编译的时候呢,是一个负类的,真正运营的时候呢,发现啊,在运动过程当中,我们传了一个子类的对象,或者呢传了一个一开始你都不知道是。什么类型的啊,就像咱们不是也举个例子啊,这个服务器这块大家都知道,这个服务器呢,其实是24小时都开着呢,是吧,因为这个程序呢,其实都一直在跑着呢。现在这块你想诶登录,那你传过来一个登录的对象,你想注册传过来一个注册的这个其实传的不是对象,传的是个标签哈,在后台这块,我们根据这个标签呢,给他创建了一个对象啊。
31:02
总之的话呢,就是一开始你传过来的啊,比如这是一个呃,A类,这是一个B类,这两个对象是谁我不知道。哎,我这个程序呢,现在也在运行状态当中,根据呢,你这块的这个请求的类型不一样呢,我们就传到了A和B中共同的负类这块的参数这了。这不就是运行的时候我才知道你传的是谁。所以编译的时候呢,你说这是一个负类的是吧,在运行的时候呢,是一个不确定的子类,所以这是运行时候才确定的。而方法的重启也一样哈,哎,咱们在代码里边,你通过A点二调一个M方法,结果运行发现的是它的。子类重写的这个方法是不是也是按编译和运行的不一致性是吧?所以呢,一般呢,诶我们都这样去体会啊。好,但是你也知道了,别人他有的这样理解是怎么回事儿啊,咱就别较真就行了啊。好,那么狭义上的理解呢,就是子类对象的这种多态性。这呢是咱们要重点说的。啊,这块呢,大家可能。能能理解的意思是吧。
32:00
对,就是如果说呢,大家要谈说,诶你是怎么理解面向对象多态性的,哎,你说呢,在Java当中是吧,诶多态性呢,主要指的就是此类对象的多态性啊,但通常呢,我们也把方法的重写,呃,也理解成是多态性,这个事儿你就先不说了,如果他后边呢,说重载算不算这个你就给他讲讲,说有的人算,有的人不算,你认为是不算的,为什么?诶这个反而他也觉得你很高大上是吧。说明你理解的很透彻啊,OK,好,那么关于这个子类对象的动态性呢,大家你就记住它这个格式啊。就是咱就咱就写person吧。这个大家好理解啊,声明的是一个person,实际你的呢,是一个它的子类是吧。嗯,慢吧。哎,就这样就行。哎,这是负类的,这是子类的啊,所以呢,你要是笔试面试的时候呢,你可以呢,说声明是个父类,实际呢用的是个子类对象,你这样去说,或者呢,你直接呢说这句话也行啊,就是负类的引用指向。之类的这个对象是吧。或者这个子类对象呢,付给父类引用都行。你要非要写个代码的话呢,你可千万别用person,很慢啊。
33:03
就太low了是吧。哪怕你说一个说我这边呢,写的是一个,或者我就给你画了吧,Object是吧。哎,这是个obg,那右边你随便放啊。有个紫润。这都比你说一个男人和女人这个强是吧。诶哈哈,诶,也就是说呢,大家在笔试面试的时候呢,就是你要举代码的例子的话呢,一定要举平时开发写的这个例子,不要呢写举咱们这个上课讲的猫啊狗啊,男人女人啊学生啊人呐是吧?哎这个呢就显得有点low了。啊,因为呢,你像你面试官他也是开发过的,你也是开发过的,大家应该举点这个开发中的例子是吧,你也不需要给他形象点去解释啊。OK,好,这呢,就是我们说的这个具体的格式,那就这样。这个呢,相当于你说清楚了啊,堕胎是怎么回事了。那还需要补一个什么。
34:00
嗯。补一个呢,就是多肽的好处。就是你说清楚了这个多肽是怎么回事了,没问题啊,说的还是挺透彻的啊。那我们什么时候用多肽呢?什么用多肽?其实呢,间接也在说多肽的好处是什么是吧?啊,这个呢,怎么写。啊,这个呢,你想明显的点,咱们不是记着啊,咱们在开发中写多肽的时候呢,一定不是在方法里边这样写局部变量的,咱们多肽的主要使用场景是方法的行参。形态这块呢,我们是一个没法确定的类型,写成个负类了,真正你调方法时候传的是各种各样的子类对象是吧。这才叫多肽的场景,呃,简单来说的话呢,呃,有了多肽以后呢,你至少不用写这种重载的方法了吧。哎,你这这么多都不用,直接写个负类就完了,你像咱们。举例。举例子,咱们谁啊,那个E的方法。波尔类型的。啊,ES是吧,这个方法的话呢,你看它这个参数不就OB间吗。
35:02
你可以传任何的一个引用类型的对象,往这一放就可以了。啊,你不用考虑说ES,我再来一个这个类型的这个参数的那个参数的不用就一个搞定。啊,因为呢,它就包含了所有的引用类型的这个变量啊。在这呢,赋值的时候呢,这不都体现为多态性吗。哎,所以呢,最直接的一个好处呢,就是减少了是不是大量的。重载的这个方法的定义啊。你不需要那定义那么多了。然后呢,还有什么好处呢。诶,其实主要好处就是这个啊,另外一个的话,你要提一提,那其实呢,就是我们讲多肽时候,我提到一个呢,叫开闭原则是吧。当然这一说呢,可能感觉有点儿。一下这个逼格就拉上去了是吧,拉到呢,就自己都有点儿hold不住了啊。啥叫开辟原则呢?对对这个这叫什么,对这个扩展的话呢,是开放的,然后对修改呢是关闭的。
36:02
啊,你看啊,如果我们后续呢,又增加了一些新的这种子类的话呢,其实这种方法呢,你是完全无需要做改变的啊,就提高了这种扩展性。啊,直接呢你去用啊,去修改关闭,因为你本身里边呢,也没有去修改啊,你直接呢,就方法体呢,该是什么样还是什么样啊,只是呢,对于一个扩展功能是开放的。啊,你又声明了,我们这个行参的这个,呃,作为它的一个子类出现了,那我就允许你往这个方法里边去放,这不就扩展了你这个功能。OK啊,这个呢,体会呢,就是一个开辟原则的一个点啊。好,呃,把这个说完以后的话呢,其实就可以了。哎,但是呢,你要说再上面给你加点分,再加分的话呢,或者说这个面试官呢,他可能会主动问你了哈,说呢,你在代码当中哪些位置体现了多态性呢。是吧,他要是抛了你就说啊,没抛你也可以主动的说。啊,像这呢,就是一个是吧。
37:00
当然这个话呢,其实你会显得比较小是吧,其实的话呢,咱们现在写的代码还比较少一些啊,大家未来你会发现呢,诶我这句话呢是对的,什么呀,叫多肽呢。无处不在啊。以至于说呢,你都不好举例子了。是吧?这个的话呢,咱们往后放一放,大家你就会发现啊,尤其呢是我们讲了什么呀。讲了抽象类和接口以后啊,会有更好的理解。为啥呢?因为抽象类和接口,虽然我们没讲啊,我们说一下这哥俩呢,有个特点,就是他们根本不能造对象。他俩不能造对象,但是我们又声明了这样的名了,那你想想你赋值的话呢,是不是只能够赋他们所谓的子类的对象?那如果说子雷丁亚都不让负,那不就没有多肽,没有多肽这哥俩就没有任何意义。换句话说,没有多态性,就没有抽象类和接口。你看这个地位一下拉的就拉的就很高了,是吧,而接口的话呢,这个我们在实际开发当中,这是大量被使用的啊,所以说呢,我讲多肽无处不在呢,它是绝对有道理的,只不过呢,咱们现在呢,还没怎么接触后边的代码,所以你感受不到。
38:12
哎,感受到的也是咱们在练习当中刻意营造出来的这种多态性啊,非得给你整一个参数是吧,这个参数的话呢,我们就用这个弗雷拉。啊,这个我们在这个里边是吧,这样整的你可能感觉呢,还差点意思,真正的在我们后边呢,接触一些,包括跟数据库的交互啊,包括我们实际的外部开发呀,在这些场景你发现的放的全都是。父类甚至呢,放的都是抽象类或者是接口,然后调的时候呢,传的全是子类的对象。所以呢,多肽无处不在。这块呢,你要举例的话呢,你就后续我们讲了一些内容之后呢,大家你就随便举例就可以了。啊,但是注意啊,千万不要去猫啊狗啊啥的,这个啊,我说的那个啊,女朋友需要一个宠物,我给他买了个猫,说这就算多肽没啥毛病,但是呢,太low了哈,哎,这个注意。
39:04
好,那么你要是这样去答的话呢,那这个多肽呢,那就很到位了啊,尤其这样的话,一抛再来一个说,如果没有多肽性抽象和接口的出现,就没有意义。哇,这一下就升华了是吧。哎,这个呢,面试官绝对是到位啊。甚至他还没有想这个事儿啊。好,那么多肽呢,对于咱们大家来讲的话呢,下边咱们说一下就是在呃开发的时候呢,上面我说的是面试哈,呃下边就在开发的时候呢,我们注意的这个点,呃除了这个型之外呢,下边一个呢,就是咱们说呢,叫呃多肽的一个使。多肽的多肽的一个使用啊,这个使用的话呢,我们提到叫呃虚方法或者叫虚拟方法调用是吧。哎,这个事儿呢,大家务必关注哈,就是我们所谓的叫编译,看左边。对啊,运行。诶看右边是吧,诶这样个场景,然后呢,呃,你再注意一下,就是这个属性哈,它不存在。
40:00
多肽型哈。哎,多态性呢,咱们指的就是这个方法,这个呢只适用于方法啊。嗯,那核心的话呢,其实就是这些啊,然后呢,在实际开发当中,大家再注意一个点呢,就是这个多肽它的一个逆过程哈。哎,就是我们能把此类对象付给负类,但是呢,这个有一些场景呢,我们需要呢,再给他转回来,这就是向下转型。啊,然后呢,我们去使用这个,诶。小括号给大家做这个墙转是吧。这个呢,就是强转符啊好,然后呢,基于这个点呢,我们又提这个说啊说为了避免。那出现强转时。的啊。Exception是吧,所以我们建议。啊,他之前使用。Instance。哦,判断一下是吧。啊,是这个类的实例了,然后你再转这时候呢,就不会出现这个异常了。完事啊,就这样来理解就可以了啊。
41:00
好,这个呢,是我们从代码层面呢,大家这样的去,诶知道核心的点在哪上面呢,是从诶笔试面试的角度来讲呢,你的一个理解的深度啊,好再往下说我债这个类的使用啊,这个咱们讲它的目的呢,大家也很清很清晰啊,它就是我们的一个根服类是吧。哎,是我们这个类继承关系里边这个根儿啊,任何一个类都直接或间接的集成于它,所以呢,它内部定义的方法就具备通用性啊,所这块我们重点呢,其实就。两个方法的使用啊,所以大家呢,你就主要关注一下这个EQ的方法,它的一个使用。还有呢,我们这个叫to string方法,它的一个使用。哎,就可以了啊,那么equals这块使用呢,呃,这块我们主要呢,就说一下这个重写和不重写的区别是吧。哎,行,知道这个事就行,不重写呢,Object里边呢,就是等等重写了,重写你就比内容。啊,开发中呢,我们常常都会去重写的。啊,这个注意好,另外一点呢,就是我们从这个呃,面试题的角度来讲呢,这个等等和ES这个区别你得会啊。
42:08
诶,这样就可以了啊,行,这个具体说怎么去重写,咱们也手写过,咱也调用过现成的,大家以后开发呢,你就调现成的就可以了啊。好,然后那个兔子瑞达的一个使用。啊,首先的话,你得明确一下这个to string,我们调完以后呢,它默认啊,也就是说这个object当中。哎,中这个twoth string,它调用完以后呢,返回的是什么是吧。调用后返回当前对象的。哎,所属的。呃,类和地质值是吧。OK啊行,然后呢,我们开发当中下一个问题就是说咱们平常重写它都干啥。哎,就是想把它的这个属性的一些信息呢,给显示出来是吧?啊然后呢,就是诶开发中。嗯,我们常常重写。哎,出来。
43:00
然后用于。诶返回,诶当前对象的。啊,这个属性信息啊。这个呢,就是自动生成就可以了啊,以后呢,也用不着自己写了,好这就完事了啊,然后下面呢,就我们讲的这个项目啊,拼电商客户管理系统啊,这个呢,主要。哎,把握的这个点注意啊,咱们需要呢,大家编写两个类哈,回忆一下,第一个呢是custom。对,这个难度不大是吧,另外一个呢,叫。对,Customer list。这个类啊。Customer行这个customer list这个类呢,它呢是封装了。对数组的呃增删改查操作。啊,哎,这块呢,是咱们重点要练的。啊,这说那个customer view呢,就是跟界面交互的啊那个大家诶有时间你愿意写一下,你就写一下里边那个就是呃调这个界面怎么样的,这个诶你得给我提示一下啊是吧?诶推出之前呢,你得告诉我一下外呼N呢,诶这个都是小细节了,诶核心呢,咱们处理业务逻辑呢,大家关注一下这个问题。
44:10
啊就可以了啊好一如既往的就是我们写项目的话呢,不包含新的支点啊,就是一如逻辑呢,更复杂了,呃,大家呢,通过呢去写更复杂的逻辑,提升你整体的这种认知能力啊OK。好,这呢,就咱们的复习内容过了啊呃,下边这个题呢,我们诶看一下啊,好多呢,其实都讲过了,第一个说父类哪些成员可以被继承。对,父类的属性方法可以被继承,这个我们说呢,构造器呢,可以被子类调用。对,通过super啊。属性可以被继承码可以是吧?可以或不可以举例子,这个就不用举例子啊,这块呢额外说一下,就是关于私有的属性,有的人会认为说私有属性就没有被继承。哎,被继承了,你怎么反驳他呀?对,你负类里边如果有个属性呢,是私有的,然后你提供盖塞方法了,我子类这块通过方法是不是也能掉。
45:06
扔掉也没报错,那说明就是有。啊,那要是没有的话,那这不就报错了吗?是吧,哎,这个啊,好下一个。Override与overload的区别啊,这个咱们说过了是吧,哎,这个呢,就略了啊。说呢这个overload,注意overload啊。重载,重载的方法是否可以改变返回值的类型?嗯,他这个里边呢,说的不是很明确是吧。嗯,那你就自己呢,别管他了,你就说呢,重载的方法呢,只跟呃方法名和形态列表有关系是吧,跟返回之间没有关系。啊就就就怕他这个理解呢,它不清晰哈,你比如说我这块呢,我写的是个int I。那这是个方法啊,Public word,我这写个method,我叫个街,这呢,肯定这俩不能同时存在是吧。如果呢,他要认为说我把这个位置我改成int了,说这时候是不是就行了。这个注意也不行是吧,就是在你这个后边的形态列表不一样的情况下呢,你前面呢,你愿意改就改,不改就不改,呃,跟这个没啥关系是吧。
46:10
知道这个核心问题就可以了啊。然后下一个哈,这个扩大器呢,是不是可以被重。写。能吗?不能。对,扩大器不能被重写是吧,扩大器可以重载啊。可以重载啊。好说,为什么要有重载?我随便起一个别的函数名不行吗?谈谈你的理解?我觉得就这样就行,建明之意啊。对,你比如说我们这个,呃,这个ari里边有这个salt方法就是排序的,你你你要写别人名咋着SALT1SOT2SO3是吧,这都多low啊。哎,所以呢,我们这块名一样,然后参数列表啊不一样,就做区分就行啊。或者换句话说就是即使你这块名写的不一样了。
47:00
我们在Java里边编译器也不完全就看明了,他其实还是要关注一下你潜在列表一样不一样啊。因为光看名额确定不了啊。好,下一个啊,Super和这次的区别。嗯,其实这个问题问的吧,他俩本身也没什么相关性是吧。哎,仅仅呢,是因为一个呢,呃,能调属性方法轨道器,另一个呢也如此。没了啊,其他使用上呢,没有什么相关点,所以呢也是啊,各自说各自的说清楚就行啊。哎,把。哎,两个关键字。哎,各自的这个,哎特点说清楚。啊就可以了,没什么可对比的啊。好,分别代表什么,各自的使用场景和作用啊。呃,它呢代表当前对象是吧?啊这个呢,是我们说此类方法当中啊,或者构造器当中调负类中的这个指定结构啊,咱们后边呢会呃讲就是讲下一章开头会说一个问题什么呀,就是这两个关键词呢,跟那个super呀,是不能共用的啊。
48:01
说错了,这两个关键词呢,跟static呢,是不能共用的。哎,到时候呢,咱们再说为啥啊。啊,所以这块呢,其他的点其实也没什么了啊好下边多肽谈谈呢,你对多肽的理解,多肽机制是什么,什么是多肽,多肽什么意思啊,这块这个问题呢,其实比较多啊。啊,因为呢,三个特征里边多肽是最难理解的。啊,如果面试的瓜啊,面试的话呢,他要时间有限,我就不问你三个特征,我上来就直接问你多肽是咋理解的。你要都在说的清楚,前面这俩呢,就约等于说你也会。啊,因为它最难是吧,啊这个咱们上面我已经都写出来了啊。哎,就略了哈。就是这儿。从这到这儿是吧,那就这块就行,这块呢,记得啊得举例啊,但是呢,咱们现在不是讲的代码还少嘛,所以呢,其就是真正呃API当中这个例子呢,我们现在建的还有限啊,目前也建的也就是像这样的一些简单的场景啊,整个大的方向来讲呢,这个项目呢,其实都无处不在的体现了多台啊。
49:04
接着往下。嗯,下一个啊说呢,多肽逆出来的对象跟不用多肽逆出来对象区别在哪。啊,它就是这样啊,呃,比如说我这块呢,Person p,我是呃new了一个慢是吧,他跟这个啊,我声明的就是一个慢。来说这个区别在哪?对这个呢,就体现了我们这个叫呃,有个叫呃虚方法调用是吧。呃,就是编译看左边,运看右边啊,然后这个话呢,就是你要没有此类的情况下呢,你编译和运行呢,都是你指定的这个方法,其实是吧,呃,区别在这儿,或者换句话说呢,就是呃这种方式的话呢,对于子类呢,特有的属性和方法呢,是屏蔽的是吧。哎,此类。哎,特有的这个此类呢,就指我们这里边这个慢啊这个类,哎特有的属性和方法呢。
50:03
嗯。或者叫屏蔽了是吧。哎,此类呢,不是慢类呢,特有的属性方法我调不了啊OK。那这个呢,当然就可以直接掉了啊,从这个角度来讲的话呢,说诶这个写法会更好,这呢就是咱们说的这个在方法里边,你写的话呢,完全就这样写就行,没必要这样写。咱们用的话呢,主要是行参上,现在呢,就是因为你没法确定是谁嘛,所以我们才写成负类的啊。下一个说出你认为多肽在代码中的体现。无处不在是吧?呃,现在呢,大家还不好说啊,哎,这个呢,咱们就其实是略了,诶后边慢慢的诶大家就能见到了啊。好,它俩的区别啊,这样的写法跟这个写法有什么区别,这个咱们都讲过了。嗯,很清楚哈,说重写eo的方法的时候呢,要注意什么问题?啊。就是你要想清楚,就是你到底是哪些或者哪个属性一样了才是相等的是吧,这个你不要呢,把当前这个类中的所有的属性呢,都让他参与进来。
51:08
哎,所以呢,这时候你要明确啊判定。啊,两个对象实体。啊,两个对象实体呢,哎,相的,我叫ES吧。啊,E4这个标准是啥?哎,是否需要所有的这个属性参与啊。哎,这要注意一下啊,另外呢,你说再参与一下呢,就是有一些这种引用类型的这种属性呢,咱们调的时候呢,有可能这个属性值啊,它是个no是吧?呃,写的时候呢,我们尽量呢,你要健壮性一点,在调方法之前,先判断一下它是不是这个空的是吧。啊,这个嗯,还有呢,什么点,就咱们讲的那个应用里边提到的啊,如果呢,这个。呃,对象的这个属性啊,又是自定义的类型。啊,那么这个,呃,此属性也需要。哎,重写ES是吧。
52:01
哎,这个呢,细节注意一下啊。好,下面说这个Java中所有类的这个负类是谁?它都是什么方法?就是object啊,那这些方法的话呢,咱们也把主要的几个说了说啊,Equals to string alyzelo啊,剩下的那些呢,我们到后续的时候呢,还会再讲,所以这个呢,大家不用刻意的去准备哈,像这个问题呢,你只要咱们学习过程当中啊,你也呃后续呢,我们用到哪个就说哪个,平时开发中你也常用啊,到时候呢,自然而然的这个就能说出来啊。好,这样就是整个的我们这个企业的这个真题,哎,咱们就复习到这儿啊。
我来说两句