00:00
第二部分呢,我们看又来看一个案例。诶,这个案例呢,更能充分的体现出这个视图界定的一个价值,那现在呢,我们抛开刚才的那个大数小数的比较,我们再做一个案例,是使用视图界定的方式比较两个person对象的年龄大小。两个person对象大,年龄大小,那我怎么来实现的呢?大家看我,我这里有一个person。啊,他继承了order的person,这个ordered是干什么呢?这个ordered里面它其实是啊,它是实现了这个,它是有有一个接口的实现,待会我们看一下里面呢,有一个compared就可以用了。然后呢,这里我写了一个类叫compare compare two,我用了视图界定,就是T,它是order的T的一个啊子类型,然后传进去就可以用了。那这个时候两个对象传进去就可以用,这是试图鉴定的又一种写法,我或者一个一个案例我们来看一下。
01:07
好,把这个拿过来看看啊,视图鉴定,那第二个案例。啊,湿度鉴定是在这儿。好,我们慢一点。来写一个文件叫view view Bo demo02。好,跑一个。好,然后呢,我把代码拿过来大家看,先看看现在这边肯定是不对的,因为我这个person这些东西,你没有定义这个是person,我要把整个这一大块。拿到我们的main函数中去就可以了,那么我们来整理一下这个思路是什么,看这里。说明一下,第一点这个地方呢,表明我这个T呢,只要是order的一个子类型就可以了,表示T是什么呢?Ordered。
02:03
的一个子类型,那么看order的到底是什么,我们追进去看一下哦,Orders sc mass里面的,再往里面追哦,发现其实它就是实现了一个compare的接口。哦,其实它就实现了一个compare的接口。好,这是第一个,第二个呢,大家看这里。我在这儿。现在我们就来玩一把,就是我们想去做一个什么事情呢?两个对象的比较,这个对象就是你传递的对象,然后呢,第一种比比较方法是。如果对象它大于它,我们就实现。还有一个呢,我可以调用OB解里面的compare to也能比较,就是对象之间的比较。对,那么现在这样写完了,过后我们来怎么用的呢,大家看。这个person。他在调这个or节的compared to呢,人家调的是谁的方法,不是是这个T的,这个T是谁呢?就是你传进来这个类型。
03:05
再看一下啊,我们再写到这这里。这里调用的这个compare。To这个方法,这个方法是谁的呢?是T这个类型的方法,至于这个方法怎么写的,完全取决于你这个T是怎么决定的。你你怎么写我就怎么调。至于你认为谁大谁小,完全由你这个compare去决定啊,这个compare是T写的,那么我就写了一个这样的T,看我写了一个person,这个person呢,我继承了order的person,你看我把这个order放进去,就说明我是你的什么呢子类型。值得好,既然我继承了order的,我就可以去重写compare方法,这就是我的compare方法,我就重写了这个方法。
04:01
啊,我这里重写了谁呢?重写了这个order的。Order的这个这个方法就是这个compare方法。这个compare方法呢?我我们可以看到啊,如果你来重写,你看假如我们自己去重写,你能也能看到df compare,你看他也会直接把这个传进去,他知道哦,你要比较的是这个和那个对象比较,那我们这我们这写的就是z.H减掉。That。that.h就是比较两个年龄,如果我的年龄比你大,我就返回增,那返回一个大于零的,如果比你小,就返回等于小于零的,如果相等,就返回零。啊,但这个就比较出来了,这个图十寸,我是纯粹为了显示这个对象方便而重写的,你也可以不重写啊,这里是重写突示证,为了显示方便。
05:04
为了显示方便而已,好,现在就写完,写完我要开始用了,看我这个person继承了order的,而且里面的泛型就是person,那么显然我现在就可以传进去。传进去过呢,你在这个greater或者greater里面就可以调它了,就统一的调,那将来如果我还有一个类,我还有一个什么类呢?我还有一个dog类。哎,我还有一个类叫我要比较狗的什么呢?我要比较狗的这个,比如说它的呃,它的这个,它它的一个什么呢?它的名字长度的大小,我也可以扩展,我怎么比方说这个我要比较啊比较。比较猫吧,这个狗呢,现在就是老出事啊,我们就写比较猫的什么名字的啊,这个名字的长度大小。我作为一个扩展,大家可能理解起来会轻松一点,知道吧,那么我说这个猫呢,它有这个name,好其他我就不写了,好吧,其他不写了,然后extend,我写个orderder的什么呢?猫泛型写进去,然后呢,我all over,我就是DEF,它是什么方法呢?Compare方法,大家注意听啊,呃,这个地方,那我我怎么写呢,就这样写的,就是用这个,呃,这个传进来啊,这是不是少写了一个什么玩意儿,少了写一个是罪。
06:30
少写的一个尺寸,我怎么比较呢?我这样比较啊,同学们,我用当前的这个Z点。名字的认识长度。啊,长度减去你that的name的那个长度,诶这样呢,我也可以实现一个明字大小比较,那么当时这两个。这两个呢,我都可以去往里面扔,看到没有,就相当于说这个compare common呢,我就可以去支持很多很多去实现了order的这个这个这个是个什么玩意,看一下是个类还是什么玩意。
07:08
哦,是房间追下是一个是一个treat。啊是个treat实现了一个treat的这种这种对象我都可以用了。再讲讲这个,它的适用性就很广泛,那么我们看怎么用的呢?来看案例啊,人,这个我已经写好了,人。汤姆,Jack从两个人比较大小这个地方应该返回谁呢?Jack啊,为了把这个名字看到,我们把这个Jack克打一下,这个要反馈JACK20岁吗?走一个。跑起来我们可以看到这个就跑起来没毛病。两间房就跑起来是Jackie,好,假设现在我们要比较两只猫的又一个catch。Cat好,Cat呢,我们取个名字,这个猫猫叫什么名字呢?叫做,比如说叫做叫做这个史密斯好,史密斯好,这是一只猫。史密斯呢?咱们就叫史密斯啊,史密斯啊,开一,那么还有一只猫叫什么?叫汤姆猫,哎,汤姆就真的史只猫了,汤姆猫好,我现在比较它们两个字随着那个更大一点,很简单很简单,我怎么办呢?我留一个compare common,把这两只猫传进去。
08:19
好,这个方形可以不写了,大家看他能接收到,看着你看这然后呢,我就我就直接这样比了算了吧啊。Greater点名字好,我就直接输出啊,我就不啰嗦,直接看看效果。这方应该返回谁呢?显然这个地方就应该返回史密斯这只猫。那我要讲的就是说,只要你实现了这个order的这个去啊,或者继承了这个order这个把方法一写,你爱怎么比,我这里就统一的进行管理。啊,当然你如果没有实现,你传不进去的啊,说老师我不能,你说老师你这样讲了过后,好像没有感觉到视图的优越性,你这不是还写清楚了吗?不着急,待会我们还有个隐私转换。
09:03
啊,这个语法它是你你不是说一句话两句话讲清楚的,我们先一点一点的来,这个是一个常规用法吗。就是我明确说我是order是吧,我明确说那肯定要接收,那我如果没有,你看假如我这个地方没有继承这个你能传的进去吗?你试试看,那马上报错这个先说这个方法就传不进去了。那你这还能传的进去吗?啊,你看这个啊,他好像又闯进去了,你觉得能能跑起来吗?是吧,你你你先看一下能跑起来吗?我们运行一下。运。对吧,应该肯定跑不起来嘛,直接告诉你这个这这个猫是有问题的,史密斯有问题,好,所以说你这个肯定是要按照你家这个套路来来做的,好现在有了过后呢,我们把这个运一下,第一个是Jack,他的名字20大于汤姆,第二个应该是史密斯,史密斯比汤姆的名字要。它是五个字节,呃,五个字符你是三个嘛,所以说这样一运行代码就跑起来了。
10:03
看到没有好,这个结果跟我们想的一样的。好,这是我们讲的关于视图的这个第二一个应用实例,那么现在呢,我们到了第三个实例了,这个第三个事例才是我真正要讲的。或者说第三个事情才是我们这个试图界定的一个优越性,但是我不讲前面这个案例呢,你很难体会,所以都是这个很难体会,现在我们先截取一段视频。
我来说两句