00:01
嗯,写一个什么样的程序啊,大家看。在这里呢,我给大家定义一个接口,注意听啊,Interface。这个接口呢,假如说就叫做麦吧。My math啊。这个接口当中啊,有一个方法,这个方法呢。假如说叫sum求和,没什么可说的啊,这是一个接口,这是一个什么?哎,抽象方法吧。是不是,哎抽样方法啊,然后在这里呢。有一个数学,这个麦子是个接口。嗯,叫compute吧。起个名啊,叫compute。我们叫做计算接口。
01:02
这是负责计算的一个接口啊,来就叫做负责计算的。一个接口行吧,里边有一个求和抽象方法,接口抽样方法,然后再往下呢,我们写一个什么,写一个数学数学类啊,这个class呢,就叫MY吧。然后呢,这个my ma里边有一个方法。这个方法呢,就叫求和萨马。充了是吧,行无所谓啊,Some叫some啊,然后呢,括号当中需要传一个参数叫什么呀,叫computer。啊,然后接下来我们这个C呢,去调什么呀,Some方法这个能看懂吧。C方法。Some方法这块呢,我们就随便传一个啊,比如传一个这个。
02:01
嗯,往这传吧,Int XT y啊,然后呢C呢,去调sum,括号里面传一个X和一个Y,行了,我这个程序大家先现在先看一下能不能看懂啊。给大家点时间,先看一下能不能看懂。就是说我现在啊,要讲的一个语法是什么?是关于这个匿名内部类的这个语法,这个类为什么叫匿名类,是因为它这个类没有名字啊,In此而得名,我还没讲啊,现在我只是在这写了一个接口啊,叫compute啊,计算器,计算器负责计算的接口,有个sum方法,Int a int b参数,这有个数学类叫my ma,然后里边有个求和的方法,这是个求和的方法。数学求和方法,这个求和方法呀,在我们的大括号里边是调我们接口里的求和。然后呢,把这个X和Y呢传进去。
03:03
这能看懂吗?别多想,各位啊,你就把它看成死呗。对吧。Computer c能看懂吗?各位有没有疑问这块?就是这个some是不是个方法,或者这个some就叫my some吗?各位,我看有的同学还没有回应啊,听不懂了吗?让my some改个名行不行?这个叫sum,这个叫my sum,这叫my ma my ma里my sum my sum,去掉C的sum sum方法在求和的时候,里边需要传XY,把XY传进来放到这,哎,求和。求完和之后呢,会返回一个值是不是哎,返回一个值,你因为一个sum这个方法,你调到c.sum求和之后返回一个int,返回一个值之后呢,把这个值输出呗。system.out.printline打印我们输入谁啊,输入这个就就输入这个X加上什么呀?哎,我们的这个Y是吧?哎等于等于啥呢?等于这个return value,而这个return value不就是调这个方法得出的这个值吗。
04:10
啊。能看明白。接口可以直接这样接口,现在没写实线呢啊,现在没写实线呢。不是啊,同学们,大家为什么老是把接口特殊化呀?为什么要把接口特殊化?我问大家一个问题,接口是不是引用类型,如果你是一个引用类型,我是不是就可以往这传?我这可以是int,那我这儿可不可以是盾,我这是盾可不可以是int,或者说我除了这个位置是一个基本数据类型之外,我这里能不能是一个引用数据类型啊?那我接口就不是一个引用类型了呗,我接口就不是你将来是不是有人专门去调你这个方法,在调你这个方法的时候,自动别人是不是会给你传过来三个参数啊。
05:02
对吧,你这个这个代码,你你调用这个方法的代码还没写呢,不要老想着老师这接口怎么能掉呢?接口怎么能,因为你这块只是方法的定义嘛,你定义完这个方法,你将来是不是得调这个方法呀,你调这个方法是不是别人会给你传三个参数过来呀,给你传第一个参数的时候,是不是会给你传一个东西过来啊。对不对啊,你想想。哎,那这块还没写完啊,咱们继续看,就在这个TEST01里面,我写一个main方法入口啊。注意来public static VO,然后我们在这里呀,去干嘛呢,去调用my math。中的什么my sum方法?怎么调,各位?
06:00
那就掉呗,首先这是一个实例方法,前面没有这个static对吧,所以这块。我们是不是得把对象出来啊,对吧,拗一个对象出来,是不是对象拗出来之后,我们是不是才能调这个方法,所以MM现在是不是就可以去调一下我们的MY。那么调用这个ma方法的话,第一个参数,第二个参数,还有第三个参数,就说第二个咱们第三个都好说,第二个传谁,那传个100吧,行不行,哎,第三个咱们传个200呗,行不行没问题。那关键是第一个参数,你怎么传呀。第一个参数需要个compute,然后有同学老师那new呗,New一个compute不就行了吗?对不起,接口是不是没法拗,你们是否还记得接口这种东西是拗不了的,所以你只能怎么办,就第一个参数你拗不了。
07:01
怎么办?你是不是在这里会写一个接口的实现类,你自动会在会在这里编写一个computer接口的实现类,对吧?是不是会在这编写时间内呀,写一个class computer ils去实现谁呀,我们的computer接口,那么当我们的这个类computer实现去实现了computer,那我们就得把这个方法是不是得写上去啊,所以这个时候我们是不是就乖乖的把这个方法写出来了,那么在这个方法当中,我们是不是计算了A和B的和,并且将A和B计算完的求和返回去了呀?好,那这就是对方法的什么实现,那么接下来我问大家,你在上面的这个my math new,一个my math掉my math my some my some方法第一个参数是compute,这个是不是一个compute呀,这个是一个compute接口,这个是不是实现了compute接口,那么这个类不是抽象类,这个类能不能创建对象啊?所以我问你第一个参数能不能new一个这个东西啊。
08:15
好,这样,嗯,看懂了吗。刚才没看懂的同学,宇阳现在看懂了吗?这会儿看懂了吗?就等我讲完你再说嘛,因为我这有个接口,你这儿是不是有一个接口下的实现类呀,你是不是对这个方法进行了实现呀,这是副接口,这是不是子类呀,然后在这个my ma里边有个MY方法,第一个参数需要用,需要compute,这个compute呢?哎,你没法new啊,你你你你你你你你你一个compute试试,来来new一个compute,第一个它是new compute它是个接口,你new不了,所以我们再编译一下,大家看啊,这个什Java c形式Java编译。编译之后呢,发现报错了,说compute是抽象的,无法实例化,Compute抽象的第52行说这个compute没有办法实例化,但是你能不能扭它呀,你拗不了这个compute,你能不能computer in PL了,这可以。
09:08
那么大家想一想,你这个参数传过来,又传过来100,传过来200,你现在调的是my some方法对吧?大家都知道方法,一旦调my some之后,第一行是不是就开始执行了?那第一行执行的时候,这个C去调sum c去调sum是不是就相当于是我们的computer实现去调sum吗?有这个sum方法最终会执行谁,这不多肽吗?对吧?负类型的引用指向最终子类型的一个对象吗?所以这个sum方法一定会调到谁上面啊,调到我们这个类上面这个sum方法对不对?是不是会掉到这个类上面sum方法呀?你想想这个C点三,我们这个C是谁compute吗?Compute是不是接口。哎,接口点上吗。诶,这个接口里有没有这个sum方法,有吧,但是你这里的对象是谁呀?是compute实现吧,所以将来调的那个sum方法是这个方法还是这个方法呀,是你此类当中的这个方法,这就是多态嘛,编译器绑定的是这个方法,运行的时候它调的这个方法,它调这个sum的时候啊,算出一个结果之后,这个结果输出了对不对?哎,接口的抽象方法前面能省略。
10:13
接口的抽样方法。接口啥啥玩意。好,这个大家能看懂吗?各位,就是这个代码看不懂的敲个零。啊,什么省啦。哦,你说我必须得这么写你才能看懂是吧?哦,行行行,我明白了,明白了,明白了,明白了,明白了,同学们明白了啊,明白了来computer computer c完了之后,C传进你能看懂是不是?哦,组到一块你就看不懂了。组到一块儿你就看不懂了是吗?就这个能看懂吗。这不是匿名内部类呀,哎呀,还没讲到匿名那部类,同学们匿名内部类还没讲呢,哎呀,我的天呐,我先给你带带。
11:05
我先给你带进去,你去,哎呀同学们,哎呀我的天呐,我现在都在撞墙了,来这是一个接口,下边是接口的实现类,对不对,对不对呀啊。这是接口,这是接口的实现类嘛,然后这是my math my下my sum这个方法嘛,然后你现在是不是你有的这个对象,是不是调的这个my my mass的my some方法,Ma some方法执行是不是执行代码呀。哎哎,各位,我现在还没有讲到,匿匿匿名内部类啊。你别着急啊,就是说现在这个代码能不能合成一行,同学们合并成一行怎么写。怎么写,你是不是把C传进去了,那能不能直接尿就传进去啊。能不能啊?啊,咱就说这个代码能不能看懂嘛,来。
12:04
我觉得应该行啊,Java c形成Java编译Java去运行TEST01,这个没啥不明白的,100加200等于300。对吧,诶这个能看懂吗?因为因为你你调的是my some方法,这不就输出了吗?My some方法就输出了吗?好各位啊。行了啊,那开始讲匿名那背了啊。
我来说两句