00:00
开始讲匿名,匿名那部对各位听清楚了啊,注意这不叫什么匿匿名对象啊,注意听啊注意听,使用匿名那类,你可以不去定义这个接口,下面的这个实现类,这个时限类你可以不写了。听懂了吗?你这里的代码将有一个翻天覆地的变化,注意啊,你new的时候new啥。New接口,在接口后面加个大括号。啊,大括号里边。就相当于是对这个接口的实现。明白吗?这个没有名字。懵了啊,开始懵了,我估计又开始懵了啊,来第一个参数。就你这个类以后不写了,接口下面的实现类不写了,你直接拗接口就行,你不是new实现吗?对吧?哎,这样做是不是代表这个类有名字啊。
01:06
同学们,我们这样写代码,表示这个类名是有的,类名是谁?是computer I PL,那如果你要使用匿名,对不对使用。匿名内部类表示这个computer这个类。没名字了。你这个类不用写了,你直接在这拗接口没有,为啥各位这种语法非常别扭,我第一次接触的时候我也懵逼啊,拗这个接口的时候,你需要加一个括号,后边加一个大括号,千万别把大括号省了啊,这个大括号就代表对这个接口的实现。这个大括号就代表对这个接口的一个实现,大家都知道一个类如果实现这个接口的话,就必须把接口的方法是不是加以实现,所以这个时候你必须在大括号里面去写这个方法,并且你还得给他。
02:07
实现了。哎,就是有点别扭,各位啊,就是让你有点别扭啊,所以这这这就是匿名内部类,这个类没有名字。啊,这个类没有名字。啊,各位,这个some方法就直接return谁就行了。它是A加B,嗯,行了啊,从哪开始,各位看好了啊,从这个位置开始到这个位置结束,这都是一个什么匿名。内部类创建的对象。注意啊,你记住就行了。对来再来一次,怎么怎么演变的啊,怎么演变的,看好了啊。好了啊,这块my some方法需要一个接口吧,哎,你这个时间类可以不写了,明白吧,你可以不写时间类了,你可以直接六接口,但是你六接口的话,你得后边加一个大括号,我在这里强调一下啊。
03:05
这里表面看上去好像是接口,可以直接拗了。实际上。并不是借口,可以牛了。啊,后面的大括号代表了对接口的什么,对接口的实现明白吗?这个大块就代表接口的实现,你实这个实现了这个接口,所以你在这个位置你得写接口里边的这个方法呀,你把方法拿过来,这个改成public,然后这个位置加一个大括号直接。求和返回A加B啊。哎,这样一个一个过程,各位啊,这样的一个过程。好,我问大家这个行不行,一起看一下啊,Java c编译,Java异行。
04:03
100加200等于380,来这边改改啊,二百三百是500 Java c编译加运行,200加300是500,没有任何问题吧?哎,这就是匿名内部类,大家注意啊,最后说一句话一句话啊,不建议使用匿名内部类。为什么?为什么,各位?因为一个类没有名字,没有办法重复使用。另外,代码太乱。可读性太差,其实现在的,哎,对只能用一次,就是你将来你假如说你还想你,你看人家这定义,单独这么一个类定出来之后,你想一想,将来我想用它的话,是不是直接可以用啊。对不对。
05:00
你好好想想,是不是这样的。嗯。你看你搞的这么一个东西出来,你这个类连个名儿都没有,我以后想用你,我咋用你呀。所以没有办法重复使用。另外一个就是代码太乱,可读性太差。可读性太差,但是有一些有一些这个人他就他就要这样写对吧?哎,那这样写的原因是啥,我说一下啊,这样写的原因是,嗯,代码看的高端。明白高端老师。听懂了吗?听懂了吗,同学。逼格高是吧啊,学习匿名内部类主要是让大家以后在阅读,在阅读别人代码的时候能够理解啊,并不代表以后。
06:02
都要这样写啊,因为匿名内部类。有很有两方面缺点啊,两个缺点。一。缺点一,太复杂,太乱。可读性差。缺点二,没有名字。类没有名字,以后想重复使用不能用,明白吗?啊,有时候上网看到别人写的代码,那是一脸懵逼啊,你说的有道理,但是我今天讲了,我觉得大家以后也可以用一下对不对啊,也可以用一用啊,也可以用一下,也可以用一下啊,以后各位啊。这就是匿名内部类,这个类没有名字。你可以直接用接口后边加个大括号就完事了,加个大括号啊,里边加上实现这个方法啊,实现的这个方法,然后将来这个方法会自动被调用。
07:05
啊,其实匿名那类是局部内部类当中的什么来一种。局部内部类是不是就是局部变量啊。局部内部,内部就是局部变量吗。对不对,哎,局部内部,对就是局部变量,那那我问你调这个方法的时候,你往这个方法上,你往这个方法上传的这个参数是不是一个局部变量。对吧,是个局部数据吧,哎,你说所以它其实匿名内部类又被叫做什么呀,局部内部类啊,局部内类一个接口,然后加个大框啊,就这么写就行,你不理解你以后就记住就行啊,不理解就记住就就就记住这种诡异的写法啊,不理解算了啊,不理解算了,各位啊,不理解算了,你只要记住这种写法就行。啊,什么意思呢?咱们来看一看,如果换成idea的话,它会是怎样的?好吧,你看idea会怎样啊。
08:02
嗯。来咱们演示一下嘛,是不是这个代码我觉得也不是说特别重要的东西啊,特别重要的东西,因为我N多年写代码,我N多年都不用匿名的,我我不是照样过来的吗?这么多年我开发代码咋了,我开发项目我去哪用匿匿匿名那部类了,对吧,虽然我写的代码很很平庸很很一般,是不是我不喜欢装逼嘛,是不是来百度这个目录下,我这个包下啊,我新建一个啊class,这个class呢,我们叫做MY。嗯,就叫叫啥呢,叫compute compute啊还叫嗯接口吧,选这个接口各位啊,选接口compute来走,那么这个compute接口呢,它里边有一个方法,我怎么写的呀?哎,有一个some对不对,Int a,然后int b是不是好,那这个接口写完了,写完这个接口之后呢,接下来我在这又写了一个类是不是,哎这个类呢,我叫什么?叫my math是不是,哎,My math这个类里边有一个方法,这个方法呢,叫什么呀?哎,My some my some,第一个参数叫compute,你看C是不是,哎,Int X in y,那么接下来在这里呢,我们怎么着呢,我们,哎算一个结果是不是,哎,算一个结果。
09:14
调谁呢?调C的什么方法呀?你看some吧。C是不是可以点some啊,C是个接口啊,这个接口不就是它吗?它里边是有这个方法吗?所以c.some然后接下来X和Y传进去,算完之后呢,接下来我们直接输出输出把X加上什么呀?哎,我们这个Y对吧,等于多少啊,我们的一个return什么?哎,Value,好,大家看这个就是我们的一个idea idea这块开发的啊,一个接口,哎,然后呢,一个类,类里边有个my some,接下来我们在这里呢,可以看一看啊嗯,写一个测试程序来class,我们叫做TEST01。那么这个T01程序当中呢,我们怎么写呢?叫PSVM轴问方法对吧?那怎么做呢?大家看好了啊,这样做是吧?My math mm new一个什么呀?My math new完这个my math之后呢,接下来我们my math这个对象扭出来之后,里边有个my some方法,所以这个时候呢,我们MM点什么呀?哎,My sum my some,大家看这个方法是不是需要三个参数,第一个参数是C,第二参数X,三个参数不YY嘛,这个时候第一个参数你就传C就行了,第一个参数不知道怎么传对吧?第二参数传个100,第三个参数传个传个200吧,哎,反正int类型传过来,那第一个参数是谁呢?第一个参数你就可以new接口,因为它这个方法第一个参数是compute,那么这个时候你在这儿呢,你就可以拗一个什么呀,哎叫compute接口,拗完这个接口你看报错了不行啊。
10:38
它不允许接口new啊,是不是,哎,你可以在后面加个大括号,加个大括号大家看它是不是还是报错呀。这不还是报错吗?对不对,还是报错是因为你大块里面没写方法,所以你光标停到什么呀,停到我们这个这个这个这个红色线上面啊,然后呢,嗯。我们这块呢,按一个什么键呢,各位摁一个这个alt回车。
11:02
摁out回车啊out回车键是纠错的,来,我今天顺便啊在这里给大家说一下idea工具中。纠正错误的快捷键是什么?是out?加回车啊,光标移动到红色红色下划线上面啊,Out加回车你看叫method你看。是不是some方法?OK,你看自己是不是就把这个方法写出来了。对吧,所以我们如果用工具的话,这个倒还行啊,上面这个overweight我们先去了吧,嗯,好,我们再去执行一下。Out,加回车啊。这个运行。好,100加200是不是等于300啊对吧?哎,你看如果用idea工具开发的话,那这个就非常之简单了啊,非常简单,这就是匿名内部类啊。
12:04
整个这块就是匿匿名内部类。好,我问大家个问题啊,我们不用匿名内部类这种语法,以后能不能开发,你告诉我同学们,在座的各位给我反馈一个信息,就是我们以后假如说不使用匿名内部类,我们能不能开发?哎,以后我们不用它行吗?不用它能不能开发?同学们,我讲的目的我跟你说的很清楚,是干啥,是因为以后别的程序员可能会写,别人这样写的话,你要看不懂不尴尬了吗?是不是啊啊。就大家思考过这个问题吗?讲这个目的就是说以后。行吧,这个东西你自己用吧啊,你自愿意用用也行啊,无所谓,来咱们再写个类啊,你不用匿名的论,你完全可以在这写个这个class就叫就叫compute呀,就叫comp in PL啊。这不是累吗?是不是implementments implement让他去实现什么,实现这个compute这个接口嘛,实现这个接口你看out加回车直接实现这个方法,你看走,你看一路一路桥回车就行了,是不是,哎,可这个记住啊,是alt回车啊,A什么呀,加上B,那这样的话,你是不是就相当于写了这个接口下的一个实现类啊,那如果是这样的话,你在你的程序里边是不是就没必要这样写了,怎么写呀,MM点什么呀,点my some。
13:26
是不是,哎,My some,那么第一个参数是不是就可以new了,你这compute I PL啊,你可以new这个呀,对吧?哎,200,然后逗号什么呀,哎300嘛,是不是你可以这样做呀,对不对?你这样的话又有多爽,你这样的话你看着多清晰,你代码的可读性多强,你要这么干,咔嚓一下子,虽然你少定义了一个类,虽然你在这儿少写了一个类,你看你的代码整的多乱,是不是来我们再执行一下。对吧,哎。Idea工具啊这工具,哎,对了,各位,这这个大家都知道吧,啊这块假如说你这个方法没写,你这只是有个接口,然后你implement去实现这个接口,对吧?Implement实现这接口啊叫compute吗?是不是,那你实现这个接口你是不是报错了,为啥报错啊,因为你这个接口里边是不是有,是不是有方法啊,你在这个里边是不是没有写这个方法怎么办?Out,回车呀,教你呀,回车呀,回车呀就有了呀。
14:23
对不对,So easy啊,是不是生成很快啊,Idea工具这个东西咱们还是非常不错的啊,非常不错的,可以帮助我们快速的开发啊,快速开发来走了。行了,同学们啊,那那咱们今天呢,就把面向对象这块就讲完了,下节课我们正式开始使用idea工具啊,从此之后我们再也不用文本编辑器了,各位啊。来,从明天开始我们就面向对象结束了嘛,对吧,数了啊。数组各位啊,以后都是idea工具了啊,不再使用文本编辑器。
15:05
I了。拜拜。啊,再见再见啊,工具再见啊,咱们idea我们将会使用啊,使用ID的plus工具以后我们就说再见了啊,这个呢,也陪伴了我们将近二十来天的时间,我们都有感情了是不是?哎,都有感情了啊。
我来说两句