00:00
然后呢,这个这就过了啊,下一个叫关于interface这个接口了,首先呢,关于使用的这个说明这呢,咱们写了也挺多,使用上说明这这好多呢啊这么多都是CTRLC。行这呢,就是咱们关于这个接口使用上的这些说明点,那大家的话呢,也是就从上往下你去捋,就是你看这里边儿这些话呢,每一个你过的时候呢,都能比较清楚的去理解这个事儿就可以了。就可以了,主要呢还是多去写代码,下面呢说具体的这个举例子,这个举例子的话呢,其实这块代码的话呢,也可以写很多,咱们代码中也都有,那我这呢,主要就举其中的一个例子,就是咱们写的这个结构。通过这个的话呢,大家去体会一下,这个叫接口,正好跟咱们平时说的USB接口呢不谋而合,USB接口呢,看着是比较形象的一个一个接口了,就大家电脑上有个这个口,这个口是吧,那这个口呢,其实它也是定义了一种标准。
01:06
那也是定义了一种标准,就是我们想跟电脑中的USB呢,进行数据传输的话呢,我们必须要遵循这个标准,那我们呢,相应的还写这个代码了。就是这里边这个USB这个test这个代码呢,其实还是比较比较不错的,算是一个比较规范的一个代码,大家呢下来呢可以去写一写,练一练,这呢我们想体现的是两个知识点,第一个呢,就关于这个接口的一个基本的使用,我们这定义了一个接口里边有常量,就是定义它的一些标准了,然后呢,还有具体的一些抽象方法,需要我们具体的实现类啊,你去实现这个接口呢,把这个抽象方法呢去重写一下,就这呢是一个算是基本的使用些。这个12啊,这算一个基本的使用,然后另外的话呢,大家去体会一下,这里边我们说这个接口呢,也看也其实也能看出来,要说定义了一种规范了,这定一种规范,包括下边呢,我们体会这个叫什么说面向接口编程的思想,面向接口编程其实呢,也是相当于我们面向这套规范去编程,那其实通过我们这个例子的话呢,也是可以体现出来这个问题的,面向这个USB我去编程,那具体呢,你调的时候呢,你就传一个它的事现类的对象里边这方法用的呢,还都是编译的时候啊,用的都还是咱们这个接口中这个定义的方法,诶你实际运行的时候呢,那是多态的方式了,所以这块呢,我们体现的知识点呢,在这又写的这个事,嗯,这个我就写到这吧,算是一个体会,哎,体会呢就是这样行,这呢咱们也提到了,这叫面向接口编程的思想了,那。
02:48
这个面向接口的话呢,通过这个图可以,通过这个图呢,其实也可以,或者说呢,就更能够体现这个事儿。更能体验这个事,因为后边呢,咱们讲这个JDBC技术的时候,这个JDBC的话呢,它涉及到了一系列的一个API,这个API的话呢,就在咱们相关的某一个包下,这个包呢,就叫java.circle包,S包。
03:13
就这个包,这个包呢,你看提供了很多API,它用于呢,我们叫访问或者呢来处理这个保存在一个数据源上的这个数据,那这个数据源呢,我们说通常都是一个关系型数据库,像MYSQL啊,Oracle啊,DB two啊,这个SQ server啊,这都算典型的关系型数据库了,那我把这个数据呢,就存在这个数据库当中,我们这里边呢,就提供了很多的API,让我们呢来访问和处理这些存储在数据库中的数据了,这呢涉及到的一个技术呢,我们就叫做这个JDBC技术,那你打开以后,我们会看到它这里边定义的,你看大量的接口,当然也有些类啊,但类比较少,大量的这个接口相当于它这里边都是定义的一些操作数据库中这个数据的一些规范啊,就是一些规范,那么我们要想操作数据库,你得获取个连接,这个连接都需要具有什么功能,我在这个connection这块呢已定义好了,那么有了连接以后,接着呢,我需要去写这个SQL语句去实现一。
04:13
啊增删改查操作了,那么我们这里呢,就需要用到叫statement。就要用到它这个呢,可能用起来呢又不是特别方便了,咱们又提到了它的一个这个这个子接口叫做prepared statement,有的呢又涉及到了一个反馈数据相关的了,我们又要用到一个叫set。又要用到它,呃,你要写一个通用的操作呢,又要用到一个麦克data等等,像这呢,定义的都是一些具体的规范,里边呢都是抽象的方法。呃,那么具体的这些这个这个方法一个实现,那都得由具体的数据库厂商你们去做,我散公司呢,指定义规范,不同的厂商自己呢,你们去写这一套接口的时间类,那这个时间类的集合呢,那就叫做你相应的这个数据库的一个驱动,那么咱们回头呢,讲JDBC,咱们想操作数据库的时候,是不是就意味着咱们一定要把这个驱动呢,你得是不是加载过来啊,哎,这呢就不在咱们的JDK当中了,你就需要呢,诶去把这个MYSQL,你可以去他的官网把它这个驱动上下载过来,放到咱们这个程序当中,然后呢,咱们写代码的时候呢,我只是调接口,我们代码层面去看代码,我都是写的接口,但是真正运行的时候呢,我们这个想办法可以通过配置文件的方式呢,让主动的去加载这个配置文件中的这个具体的子类了,呃,不能叫子类,叫实现类了,然后呢,去造实现类的对象,然后呢,诶这样相当于实际执行的话呢,都是我们实现类的对象。
05:44
诶,咱们代码当中你看到的都没有具体某一个数据库厂商的API,所以把这个呢,我们就称作面向接口编程。哎,就这样的意思,哎,简单的在这写一句话啊,说面向接口编程,就这呢,大家有这样一个概念就可以了,具体写的话呢,后边一写代码你就知道了,就是我们在这个。
06:07
这个应用程序中这个调用的这个结构,都是这个调用结构呢,都是咱们这个JDBC中这个规范的这个接口,或叫定义的接口。说呢接口啊,不会出现这个具体某一个数据库厂商的API,这个API,那么具体输厂商API呢,作为我们这个这套接口的一些实间类了,这叫驱动了,然后使我们通过配置文件的方式给它导进来的,就是尽可能的不让在代码当中去体现这个第三方的一些东西了,那这样的话呢,使我们这个代码呢,就更具有通用性,那或者叫可移植性,那我们这时候呢,用的是myslel,那回头呢,我们用这个Oracle的话呢,直接切换,你把那个配置文件呢,做一些调整,直接呢就切到我们Oracle当中了,因为这个步骤呢,都是规范的,因为在接口中都已经定义好了,这也是叫面向这这也说明就是接口呢,它定义的是一种规范,一种标准啊行,这个到后边呢,大家再去深入体会一下,这块呢,是稍微有点难度的啊,就是你看到说接口说他定一种规范,说面向接口编程这个想法跟说法的话呢,这个需要。
07:24
不断的我们建新的代码,大家去深入理解,在下边呢,我们提到说JAVA8当中呢,关于街口的新规范行,这个新规范呢,对大家的要求呢,其并不高,虽然说这个JAVA8呢,已经发布了好几年了,这个,但实际上在公司当中呢,可能安装JAVA8的这个JDK呢也不少,但是我们用这个新规范的这个功能还是比较少的。还是比较少的,就是咱们现在如果自己去定义接口,通常呢,咱们还都是抽象的方法啊,你要看一些现成的API,当时有一些呢,他加入了一些默认方法,但是其实我们用的时候,有时候呢,也想不起来用啊,就是因为这个这个咱们用的还是习惯上是以前那些API。
08:08
哎,API这个用的话呢,它这个,呃,就像这个一个新的东西推出来以后,它可能比如说JDK也一样,它推出这个版本,它可能有100项更新,这一百一百项更新呢,我们实际开发当中去检验发现呢,这100项呢,用的不一定特别好,可能里边呢,十个是用的特别好的,大家觉得啊特别帅是吧,有跟没有呢,区别很大,剩下这90多个呢,可能就比较鸡肋了,那提供了以后呢,可能永远用不着,就属于这么个情况,那虽然我们见到一些这个正儿八中的一些API呢,确实加了一些默认方法了,现代方法相对少一些,这个你看到默认方法了,但是也不是说你非得要用,加了以后你不用那也没啥是吧,你有别的方式实现也可以行,这呢对大家要求呢,就稍微低一些,在这个JAVA8这块呢,咱们提了这样的五个小的知识点,这关着关于这个这个JAVA8中接口的使用。
09:02
大家呢,只需要关注这五个知识点,其实就可以了,啊,这呢是对应的咱们这四个。他这个代码我就拿掉了。行,这呢是四个,还有一个。在这儿就是我们如何在这个子类或者叫实现类的方法中调用父类或者结构中被重写的这个方法,被重写的或者被实现的啊,这个应要被重启了,因为人家那个是有方法体的了,那这时候呢,我们这样的方式去调,就是加上这个接口点修这样的方式复类的话呢,这个比较清楚,直接修就行了,这个我把它整个粘过来行,这呢就作为一个举例子了,就是这块整个扎VA8对大家要求的并不是特别高,这个呢,你能了解这里边这个新特性,比如说呢,在答咱们这个面试题的时候,这个面试题呢,就刚才咱们考试考的说抽象类。
10:13
和接口的这个叫一同了。答这个面试题的时候呢,这个题的话呢,那会我说叫比较经典的,凡是说的叫经典的就都是比较老的,嗯,这个包括大家你去网上你去搜,哎呀,这个要考这道题了,然后我看看这个怎么去答,你去网上搜的话呢,八成你搜出来的都是旧的一些说法,就是这个时候呢,关于接口当中呢,他可能都没有提到扎VA8新特性的事儿,那大家呢,如果面试里边你涉及到这个问题了,你把扎VA8这个内容你融进来,包括扎VA9里边,你也可以去提一提,就是又加了一个叫私有的方法了,这样的话呢,会让你这个题目呢答的耳目一新,大家一看哟,原来这个新得性人家关注的还挺多的啊,因为这道题呢比较老啊,你想答出花样来,那只能是加一些新特性的一些说法了,那关于他们二者的这个相同点,相同点呢,就是咱们那会儿提到的这个不能实例化,这是最主要的一个点了,另外呢,我们都可以想象叫都是都可以这个包含这个。
11:17
这个抽样方法的,嗯,其实这个包含抽样方法这个事呢,其实也就决定了他们本身呢,都是不能实例化的了,嗯,但是呢,不能实化这个事儿呢,他们还是体现的有一些不同,就是这个抽象类呢,人家有构造器,哎就人家是有构造器的,你这个接口呢,你没有播到器,就跟说呢这个人一样,这个虽然都没有孩子一类人呢,是根本就生不了。一个呢是人家就不想要是吧,不想就是有生孩子的能力,但是我就不想要,这属于臭氧类,人家有构造器是吧?啊有一类人呢,他就是根本就没法生孩子,没有过到气是吧?哎,这个你去体会啊,就是他还是有区别的啊,这叫不同点啊,那这个不同点的话呢,大家怎么答呢?你就把这个抽象类和咱们这个接口的这个咱们当时讲的这些基本的定义,这个内部结构这个解释说明一下就可以了,就是不同点呢,就是各说各的,当然这是其中一个方面啊,这是其中一个方面,就是比如抽象类里边说我们可以定义属性,定义构造器,就是定义抽象方法也可以没有,就这都描述描述啊,接口啊,接口里边呢,你又提到了一个JDK7JDK8,这样的一个区别。
12:41
啊说七呢,及以前只能定义常量和抽样方法,八的时候呢,可以定义这个静态方法和默认方法了,当然了,你把这个九也先加进来说,还可以定义这个私有的方法,诶这就让你这个题目呢,这个大的耳目一新了,就把它的内部结构呢定义说一下,然后其次再说一下呢,就是关于我们Java中类接口之间这种关系,继承关系这样一个描述,那就是类方面我们体现了叫单继承性,啊类呢,这叫单继承性,那这个接口接口跟接口之间呢,人家首先也要继承,那其的话呢,它还是一个叫多继承,这是一个,另外的话呢,这个类跟接口之间的关系,这个我们称作叫实现关系,而且呢还可以多实现,把这个呢也描述一下,那基本上的话呢,就可以了啊行这就OK了,然后再往后呢,这两个内容又是这个可能比较有难度了,但是呢,不需要大家。
13:41
这个看的那么多,乃至于说呢,这两个呢,你先就不看了,就光把我们刚才说的这个接口这些内容啊整清楚就行,那么关于具体接口的应用,我们这呢,又提到了两类设计模式,一个呢叫代理,一个呢叫工厂,工厂呢其实有两个了,然后代理模式首先呢,他要解决的问题。
14:01
说呢就是呢,我们想提供一个代理的一个对象,来让他去替代原始的那个对象的一个访问。就是这样一个点。代理其实就从这个名字上就很好理解了,大家呢,你就想咱们举的那个例子,说这个明星,还有那个经纪人,哎,这个事就行,嗯,咱们呢,写的是一个代码上的一个例子了,就稍微小一点,这个我们就把它拿过来。嗯,我写的是这个这个。哎,这呢是咱们有点像那个代码上的一个例子了,然后你可以拿咱们写的那个明星和经纪人的例子呢,去去想这个事儿就可以了,行CTRLS一下,OK,就这里边呢,要求就是咱们这个接口就定的是一个标准了,那具体的话呢,就是背带类和带类都得需要去实现这个接口。这是代类的一个特点,就是它它俩呢都得去实现这个接口,然后呢,我们通过这个叫代理类的对象,咱们去调这个实现接口中的抽象方法时,我里边呢,包含了对被带了个对象同名的一个方法的一个调用。
15:14
在这呢,就叫代理模式啊行,那下边呢,有具体的这个应用场景,这个在PPT里边呢,也有写,也也有写,就后边的话呢,咱们会遇到,嗯,最起码呢,咱们在讲到这个基础的反射当中呢,会提到一个叫动态代理,到了后边咱们框架当中呢,其实都会这个在讲啊,在讲这个代理啊,到这个这个框架当中呢,讲代理呢,就是动态代理了啊行,具体的话呢,我们就先不再去展开说明了,大家呢,就只是把这个代码看作是接口的一个应用就可以了。嗯,下一个呢叫工厂,工厂这块的话呢,我们是写到一个文档里边了,没有具体去写了,这个也不需要大家花这么多精力去研究这个问题了,这块呢,我们主要提到了两类设计模式,一类呢叫做工厂方法,一类呢叫抽象工厂,抽象工厂呢跟工厂方法主要区别呢,就是在于这个创建对象的这个复杂程度上了,这块呢,我们有具体的列这个例子了,哎,首先呢,这里边我们先提到一个问题,就是工厂方法,呃,工厂的设计模式想要解决的问题是什么?
16:19
解决什么问题啊,对对,就是创建对象,我们称作呢叫对象的创建者,然后呢,跟你后期调用,我们想实现他们的分离,哎,这就是呢,我们希望达到的一个点这样,那具体的模式这块,咱们就提到了这样的几个了,简单工厂,简单工厂呢,其实也可以看成是工厂方法的一种情况了,然后还有抽样工厂这块呢,我们把这个呢CTRLC来拿过来。哎,这呢,就关于这三种模式的这样一个说明,诶核心的本质就是诶我们不用自己去拗了,让这个工厂呢去拗,然后呢,我们自己呢,就是只需要呢,调的用的时候呢,直接拿过来用,这个属于这个叫调用者啊就可以括号就没了,行,这个呢就不用深入的去说了,诶大家刚开始的话呢,也不用再去研究太多这个代码了,直接你就听一听,下课呢,都不太用过多的去关注啊就可以。
我来说两句