00:00
来看一下啊,在这个咱们继续往下看,接下来看Y,就是在招VA8中呢,它对接口的改动也是很大的,对吧?从张八开始呢,它支持在接口中允许有有实现,拥有实现的那个方法,对吧?我们称为默认方法,什么叫做拥有实现了的方法呢?我们过来试试,比如说呢,现在呢,我要生明一个接口,比如说叫做my function,随便写吧,就是生成一个接口,然后接口呢,我们说接口中以前是不是接口中只能有两个成员呢?都是什么来着,叫做全全局静态常量和抽象方法,是不是只能有这些啊,对吧?而现在在招方中,它不仅可以有这些,还可以有什么呢?叫做默认方法,使用depot修饰符,对吧?Depot,比如说word,呃,Get name吧,就返回个string吧,就是返回一个string,叫get name,然后return呢,叫做return点啥呀。
01:00
啊,你这哈哈哈吧,对吧,注意看在这注意这是个接口吧,在三个方向中,它允许接口中拥有实拥有实现的这个方法,对吧,拥有功能的这个方法我们称它为叫做默认方法,用defat修饰符去修饰看吧,这也是意味着是不是个跟我们原来那个那个思路是完全颠覆了,对吧,都有方法了啊嗯,那用法就是一样用了呀,对吧,我们说它为什么设计这个功能呢?对吧,实际上呢,在正儿八那个功能是在设计它的时候呢,它是这样想的,就是说原来比如说我们是不是个叫做collection系列集合呀,对吧,Collection系列集合,然后呢,有这个collection系列集合的同时,我们还有一个叫做collection思用于操作集合的工具类,对吧,那他认为呢,既然那个里边操作集合的工具类里边都是用于操作集合的方法,那为什么不能把它放到同一个内容?
02:00
对吧,还要单独的建一个类,那这可能也是它的设计初衷,那另外一个呢,我觉得呢,它的这个特点就是新来的不有这个函数式接口吗?对吧?然后函数接口里头是不是只能有一个抽象方法,但是为了对于原来的一些支持,他搞了这么一个功能,就是张八和张二七是不是得兼容啊,七里边是不是有很多接口啊,对吧?而现在JAVA8要想对JAVA7的完全的一个兼容,它就设计了这样一个功能。当然这都是我们猜测,谁知道人家工程师怎么想对吧,对吧,当然这些是不是都是合理的呀,对吧,这是合理的啊,那么这个时候如果说拥有了这个实践的方法的话,那是不是就意味着它存在一些问题了,就是跟我们以前思考的方式,它是不是有些问题,比如说第一个那就是冲突的问题,对吧,比如说什么叫冲突问题呢?我们现在呢,有个接口,然后同时呢,又有一个类,对吧,类呢,就叫做嗯类叫啥呀?叫做嗯,Test叫什么呢?My in interfa可以叫my class吧,My class对吧,我的类,然后呢,这样的话呢,这里边呢,它也有一个word,呃,返回个string,叫做get name方法,这里头return什么呢?比如return啊,嘿嘿嘿,是吧,对吧,那这样的话,这是接口中有该name,类中说也有个该name对吧,那这个时候呢,假如我写一个实现类对吧,叫做S。
03:28
Class吧,哎,就是继承用实现呢,让他去extend my class,同时还叫做my function对吧?那么这样的话,那我们说继承和实验学上功程是不是都一样,都是能继承复位或者是接口中的方法吧,对吧?那现在是不是存在两个get name对吧?那就意味着什么呢?意味着这个时候呢,我来看一下叫test depot interface对吧,默认方法这个时候呢,就意味着当我创建s class对象的话,对吧们。
04:09
嗯嗯,叫做main方法,这个依的闷方法也不一样,是这样吧,那在这里的话,我要是创建s class,是不是这个对象呢?等new s class这个时候,我要是c.get name,它调用的应该是哪个get name,你们咋知道呢?嗯,那你们说的对了,又见运行是不是黑嘿,黑呀,含义是说内中的这个内中的这个方法呀,对吧,黑黑对吧?那含义是什么意思呢?注意这里有个他提出了一个叫做类优先原则,说什么意思呢?说若一个接口中定义了一个默认方法,而另一个负类或接口中定义了一个同名方法时,对吧?说选择负类中的方法,如果负类中提供的具体的实现,那么接口中具有相同名称和参数的默认方法会被忽略,那函。
05:10
但是接口中那个该name是不是就被忽略了,对吧,就被忽略了,这就是类优先原则,这是什么对吧?那这是第一个冲突问题,那老师你现来说是还有另外一个呀,就是什么呢?就是说我接口是不是可以多实现对吧,那就是多实现那就意味着什么呢?比如说我在这里再来一个叫做my interface,这里边也有一个这depot默认方法呀,对吧,Depo返回个使际也叫get name吧,对吧,那么这个时候呢,Return什么呢?呵呵呵,对吧,呵呵呵,是这意思吧,那么这个时候呢,如果让我儿子刷class,同时又实现一个叫做my interface,那也就是现在是应该谁先哎说还是继承先呢?对吧,当然咱们现在是不是放才继承的这个问题了,对吧,说实现了两个接口的话,那么这个时候用的看是不是报错了,不是就近了啊,是不是报错了。
06:10
是吧,报错意思是让我们实现注看还义,就是说你这个只实现那种必须去实现人家的那个方法,注意看你是想实现my function中的那个get name呢,还是用my in the ways中的get name呢?你是不得明确一下了呀,对吧?那比如说我来个function,注意看它的写法是不是叫我这个get name时候必须去重写了呀,重写的方式是我默认调用的是my function get super get name,那么这样的话,当我去调用测试的时候,注意看右键,那应该就是好好好吧,对吧,对吧,那这个时候假如说我要是不这样写了呢。我说我要实现的话,我要是去实现my interface中的get name吧,对吧?那这是,那就是,呵呵呵,看了吧。含义是如果说你这个类多实现了这个接口,并且这个接口中具有同相同定义的相同方法签名的方法时,那么是不是要求时间内必须实现该方法对吧?那这就是注意事项PPT上都写着没问题吧,对吧?那这就是接口中的默认方法对吧?正八种接口中允许你声明具有实现的方法就是称之为默认方法。
07:31
可定法对吧?那就是这个规则啊,知道就可以了啊,所以除了默认方法以外,在这号方法中,接口中不仅可以有默认方法,它还可以有静态方法,看到吧,说接口中的静态方法啊,你指的是什么?加给顺序啊,这交给顺序跟原来说没变吧,这是不没变化呀,我们说原来不也一样吗?原来我们说接口是不是也是特殊的加va类啊,他说也有加plus自己码文件呢,那是不是就加载问题没变呢?这是没变化的吧,对吧,是没变化的,那只不过这正确方法怎么用啊,那用法有区别吗?哎,那是不就用法是没区别了,对吧,点so对吧,右键。
08:25
运行他是不是只是允许有啊借口什呢静单方法看懂没有对吧?那这就是招法话是不是感觉像是学了一门新的语言啊,咱们什么搞乱了,那现在,那你要是非得说现在的区别,那就是不是啥区别,嗯呃,对他说对关键字不一样对吧?那现在是不是区别确实不大了,对吧,就不大,但是呢,接口依然可以多实现对吧?那依然还是单继承对吧?假设有一天要是多继承了,你们是不是得疯啊,好了,那么这个就是接头的末日。
我来说两句