精华内容
下载资源
问答
  • JAVA基础——接口(全网最详细教程)

    万次阅读 多人点赞 2018-05-10 09:46:42
    官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 我的解释:接口...

                                       Java基础——接口


     

     

    接口概念


        官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)

        我的解释:接口可以理解为一种特殊的类,里面全部是由全局常量公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。或者我们可以直接把接口理解为100%的抽象类,既接口中的方法必须全部是抽象方法。(JDK1.8之前可以这样理解)

     

    接口的特点


        就像一个类一样,一个接口也能够拥有方法和属性,但是在接口中声明的方法默认是抽象的。(即只有方法标识符,而没有方法体)。

     

    • 接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。
    • 一个接口就是描述一种能力,比如“运动员”也可以作为一个接口,并且任何实现“运动员”接口的类都必须有能力实现奔跑这个动作(或者implement move()方法),所以接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。
    • 如果一个类实现了一个接口中要求的所有的方法,然而没有提供方法体而仅仅只有方法标识,那么这个类一定是一个抽象类。(必须记住:抽象方法只能存在于抽象类或者接口中,但抽象类中却能存在非抽象方法,即有方法体的方法。接口是百分之百的抽象类
    • 一个JAVA库中接口的例子是:Comparator 接口,这个接口代表了“能够进行比较”这种能力,任何类只要实现了这个Comparator接口的话,这个类也具备了“比较”这种能力,那么就可以用来进行排序操作了。

    为什么要用接口


    1.     接口被用来描述一种抽象。
    2. 因为Java不像C++一样支持多继承,所以Java可以通过实现接口来弥补这个局限
    3. 接口也被用来实现解耦。
    4. 接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。

     

     

     

    接口的语法实现


        为了声明一个接口,我们使用interface这个关键字,在接口中的所有方法都必须只声明方法标识,而不要去声明具体的方法体,因为具体的方法体的实现是由继承该接口的类来去实现的,因此,接口并不用管具体的实现。接口中的属性默认为Public Static Final.一个类实现这个接口必须实现这个接口中定义的所有的抽象方法。

        一个简单的接口就像这样:拥有全局变量和抽象方法。

        为了实现这个接口,我们使用implements关键词去实现接口:

    其中testClass类实现了我们上面刚才定义的 in1 这个接口,既然你要实现接口,也就是实现接口代表的一种能力,那么你就必须去实现接口给你规定的方法,只有把接口给你规定的抽象方法都给实现了,才承认你这个类实现了这个接口,实现了这个接口代表的某种功能。上图实现了接口中规定的display()方法。

        写一个测试类,用来测试一下我们刚才实现的这个接口,因为testclass类的对象t实现了接口规定的display方法,那么自然而然就可以调用display()方法咯。

        有兴趣的同学可以去这个在线IDE亲自试一试:点击打开链接

     

     

    接口的进一步理解


     

        我们知道,如果某个设备需要向电脑中读取或者写入某些东西,这些设备一般都是采用USB方式与电脑连接的,我们发现,只要带有USB功能的设备就可以插入电脑中使用了,那么我们可以认为USB就是一种功能,这种功能能够做出很多的事情(实现很多的方法),其实USB就可以看做是一种标准,一种接口,只要实现了USB标准的设备我就认为你已经拥有了USB这种功能。(因为你实现了我USB标准中规定的方法),下面是具体的例子:

     

    先声明USB接口:其中规定了要实现USB接口就必须实现接口规定实现的read( )和write( )这两个方法。

    interface USB {
       
    void read();

       
    void write();
    }

    然后在写一个U盘类和一个键盘类,这两个类都去实现USB接口。(实现其中的方法)

    class YouPan implements USB {

        @Override

        public void read() {

            System.out.println("U盘正在通过USB功能读取数据");

        }

        @Override

        public void write() {

            System.out.println("U盘正在通过USB功能写入数据");

        }

    }

     

     

    这是U盘的具体实现。

    class JianPan implements USB {

        @Override

        public void read() {

            System.out.println("键盘正在通过USB功能读取数据");

        }

        @Override

        public void write() {

            System.out.println("键盘正在通过USB功能写入数据");

        }

    }

     

     

    这是键盘的具体实现。

        那么,现在U盘和键盘都实现了USB功能,也就是说U盘和键盘都能够调用USB接口中规定的方法,并且他们实现的方式都不一样。

    我们在写一个测试,来看看具体的实现:

    public class Main {

        public static void main(String[] args) {

            //生成一个实现可USB接口(标准)的U盘对象

            YouPan youPan = new YouPan();

            //调用U盘的read( )方法读取数据

            youPan.read();

            //调用U盘的write( )方法写入数据

            youPan.write();

            //生成一个实现可USB接口(标准)的键盘对象

            JianPan jianPan = new JianPan();

            //调用键盘的read( )方法读取数据

            jianPan.read();

            //调用键盘的write( )方法写入数据

            jianPan.write();

        }

    }

     

     

     

    结果如下:

     

     

        感兴趣的同学可以去在线IDE平台自己验证一下:点击打开链接

     

     

    关于接口的几个重点


    1. 我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的,这样怎么可能产生具体的实例呢?但是,我们可以使用接口类型的引用指向一个实现了该接口的对象,并且可以调用这个接口中的方法。因此,上图中最后的方法调用我们还可以这样写:(实际上就是使用了Java中多态的特性)

    public class Main {

        public static void main(String[] args) {

            //生成一个实现可USB接口(标准)的U盘对象

            //但是使用一个接口引用指向对象

            //USB接口类引用可以指向一个实现了USB接口的对象

            USB youPan = new YouPan();

            //调用U盘的read( )方法读取数据

            youPan.read();

            //调用U盘的write( )方法写入数据

            youPan.write();

            //生成一个实现可USB接口(标准)的键盘对象

            //但是使用一个接口引用指向对象

            //USB接口类引用可以指向一个实现了USB接口的对象

            USB jianPan = new JianPan();

            //调用键盘的read( )方法读取数据

            jianPan.read();

            //调用键盘的write( )方法写入数据

            jianPan.write();

        }

    }                                                                                                                                     

     

     2.一个类可以实现不止一个接口。

     

    3.一个接口可以继承于另一个接口,或者另一些接口,接口也可以继承,并且可以多继承

    4.一个类如果要实现某个接口的话,那么它必须要实现这个接口中的所有方法。

    5.接口中所有的方法都是抽象的和public的,所有的属性都是public,static,final的。

    6.接口用来弥补类无法实现多继承的局限。

    7.接口也可以用来实现解耦。

    接口的通俗理解


     

        前面我们讲多态的时候用“空调”——“遥控器”的方式去理解多态,实际上在上面的的几个重点中的第一条讲的也是多态的实现,比如,我们可以把“节能”作为一种标准,或者说节能就是一个“接口”,这个接口中有一个方法,叫做变频方法,任何空调,如果要称得上叫做节能空调的话,那么必须实现“节能”这个接口,实现“节能”这个接口,也就必须实现“节能”接口中规定实现的“变频”方法,这样才算是真正的实现了“节能”这个接口,实现了“节能”这个功能。

        当某个空调实现了“节能”接口后,这个空调就具备了节能的功能,那么我们也可以不用空调类的引用指向空调对象,我们可以直接使用一个“节能”接口类型引用的“遥控器”去指向“空调”,虽然这个“遥控器”上面只有一个按键,只有一个“变频”的方法,但是“遥控器”所指向的空调是实现了“节能”这个接口的,是有“变频”方法的实现的,我们用这个只有一个“变频”方法的遥控器去命令空调调用“变频”方法,也是行得通的,实在不清楚的同学可以去看我的另一篇文章:JAVA之对象的多态性

     

     

    接口的标识用法


        虽然接口内部定义了一些抽象方法,但是并不是所有的接口内部都必须要有方法,比如Seriallizable接口,Seriallizable接口的作用是使对象能够“序列化”,但是Seriallizable接口中却没有任何内容,也就是说,如果有一个类需要实现“序列化”的功能,则这个类必须去实现Seriallizable接口,但是却并不用实现方法(因为接口中没有方法),此时,这个Serilizable接口就仅仅是一个“标识”接口,是用来标志一个类的,标志这个类具有这个“序列化”功能。具体的实现请参考我的另一篇文章——JAVA之IO流。

     

    接口在生活中的思想体现


    其实,在我们的生活当中,有很多地方都体现了“接口”的思想,想必,正在阅读这篇博文的你,是不是也喜欢摄影呢?

    佳能(Canon)EOS 80D 单反相机 单反套机(EF-S 18-200mm f/3.5-5.6 IS 单反镜头)

    玩摄影的童鞋都知道,单反由相机镜头组成,相机分不同的型号,有半画幅的,也有全画幅的。镜头也是一样的,分长焦,短焦;还有定焦和变焦。每种镜头都有各自特定的发挥场景正是因为镜头的多元化,使得我们的摄影能够“术业有专攻”。大家想一想,如果我们的单反相机部分和镜头部分是固定在一起的,不能够更换镜头,那么将会多么的糟糕啊!

    因此,每个相机品牌为了能够兼容不同的镜头,各自发布了一套镜头卡口的标准,这套标准就好比我们前面提到的“接口”,都是某种“约束”。举个栗子,我们佳能的相机,不管你是哪一家镜头生产厂商,腾龙也好,适马也好,只要你按照我佳能卡口的标准来生产镜头,你生产的镜头都能够很好的在我佳能相机上面驱动。

    因此,当我们打开“狗东”,准备给自己的新相机买镜头的时候,就不难发现,我们需要根据自己相机的品牌来挑选特定卡口的镜头,这样的镜头才能被我们的相机正常驱动。

    回到Java上面来说,其实接口给我们带来的最大的好处就是“解耦”了,相机能够搭配不同的镜头,才能有各种各样的搭配玩法,变得更加的灵活。在软件系统中也是一样的,接口可以有很多不同“特色”的实现类,我们只需要声明同一个接口,却可以引用很多个该“接口”引申出来的“子类”,这不也大大增强了我们软件系统中组件的灵活性吗?

    聪明的你,对于“接口”的理解是不是又更加的深入了呢?

     

    基础不牢?新手不友好?无人带路?关注《扬俊的小屋》公众号吧!


     

     

     

    参考资料


    1.Java开发实战经典》 李兴华著  清华大学出版社

    2.https://www.geeksforgeeks.org/interfaces-in-java  作者:Mehak Kumar. and Nitsdheerendra.   翻译:刘扬俊

     

    博客文章版权说明


    第一条 本博客文章仅代表作者本人的观点,不保证文章等内容的有效性。

    第二条 本博客部分内容转载于合作站点或摘录于部分书籍,但都会注明作/译者和原出处。如有不妥之处,敬请指出。

    第三条 征得本博客作者同意的情况下,本博客的作品允许非盈利性引用,并请注明出处:“作者:____转载自____”字样,以尊重作者的劳动成果。版权归原作/译者所有。未经允许,严禁转载

    第四条 对非法转载者,“扬俊的小屋”和作/译者保留采用法律手段追究的权利

    第五条 本博客之声明以及其修改权、更新权及最终解释权均属“扬俊的小屋”。

    第六条 以上声明的解释权归扬俊的小屋所有。

     

    展开全文
  • Java使用接口好处 群网友回复:    我要开车去北京 不管你给我宝马还是BYD 我只管调用车的go()方法就行    能够实现2种类或是多种类所约定的一种概念约定,来使这2种类或多种类能以这个被实现的...

    Java中使用接口的好处

    群网友回复:
     
     我要开车去北京  不管你给我宝马还是BYD  我只管调用车的go()方法就行
     
     能够实现2种类或是多种类所约定的一种概念约定,来使这2种类或多种类能以这个被实现的概念约定来协调的,紧密衔接的工作。
     
     举个不太对但听形象的例子:比如键盘那 你不管用那个厂家的键盘 插上都能正常工作因为只要键盘实现了那个接口就电脑就能识别
     
     就是你可以用别人的名字干好坏事让找不到你
     
     就是强约定 不提供默认实现的强约定
     
     没有默认实现 就没有提前设置的状态 也就是自己能控制所有的
     
     Extends是有害的;也许对于Charles Manson这个级别的不是,但是足够糟糕的它应该在任何可能的时候被避开。“JAVA设计模式”一书花了很大的部分讨论用interface继承代替实现继承。
      好的设计者在他的代码中,大部分用interface,而不是具体的基类。本文讨论为什么设计者会这样选择,并且也介绍一些基于interface的编程基础。

     

    查阅资料:

     《Java编程思想》:
     接口是特殊的抽象类。
     interface 不仅仅是一个极度抽象的类,因为它允许人们通过创建一个能够被向上转型为多种基类的类型,来实现某种类似我重继承的特性。
     完全解耦。只要一个方法,操作的是类而非接口,那么你就只能使用这个类及其子类。如果你想要将这个方法应用于不在此继承结构中的某个类,那么你就触霉头了。接口可以在很大程度上放宽这种限制,因此,它使我们可以编写可复用性更好的代码。
     通过接口可以实现多重继承。
     
     《Java核心技术 卷I:基础知识》
     接口与抽象类:使用抽象类表示通用属性存在这样一个问题:每个类只能扩展于一个类。
     Java的设计者们选择了不支持多继承,其主要原因是多继承会让语言本身变得非常复杂,效率也会降低。
     为了避免这类问题的出现,Java语言利用接口机制来实现多继承的大部分功能。

     
     
     
    谷歌搜索:

     接口是用来规范类的,它可以避免类在设计上的不一致,这在多人合作的开发中犹为重要 
     就比如接口中有A方法,那么实现这个接口就必须实现A方法,这就形成了一种规范
     
     首先接口出现的意义就是帮助Java语言实现一个类似于多继承的功能.但是实现的多继承功能不会使代码中的类之间出现网状关系,而是比较清楚的树状关系,类似于家谱的感觉.
     接口也不是什么都好的,一般在开发的时候接口是不会随便改动的,因为接口的改动就意味着要变动它的所有实现类.
     实际应用中,接口中是对外公开的模块的业务方法,而且接口的命名更符合我们对接口(具体实物)的理解,比如USB接口,我们在理解的时候可以以一个实物的方式来理解.
     另外,JVM在加载接口的时候,对接口的空间分配(堆与栈梆定)与类是不一样的.这也就是为什么JAVA里没有类之间的多继承,而是用接口来实现一个多继承的模拟.
     
     类是对象的抽象,接口是类的抽象。
     
     接口就是规范,在整个系统设计中,涉及到很多层,为了使各个层之间调用透明话,你只需要知道接口,按照这个接口做你具体做的事情,就可以融合到整个系统中了。 
     生活中的例子很多,例如:插头、插座,有标准的规范告诉你插头应该是几个脚,插座是几个孔等等,做插头、插座的公司就是根据这个规范来做插头、插座,而不需要做完一个插头就跑遍全世界去试用一下这个插头做的对不对。
     
     
     问:
     java中的接口到底有什么作用,有什么优点,书上说java只支持单继承,要想继承多个类的话就要用到接口,这就是java的优点,但是用了接口还得把接口中的那些方法全都重写,这有什么意思呢,还不如直接在该类中直接再定义一个方法,何必去继承呢?
     答:
     无需多言,你想想我们平时用的电源插座与电器电源接头之间是什么关系。用个比喻应该更容易接受。插座不就是一个借口,所有的电器如果想要用电,就必须接受这个规格的插座,就是必须实现所谓的接口,具体你这个电器用来干吗,我插座(接口)就不管你了,也就是功能与规范是分离的,不相干予。假如你如果想用三头插,那好,换另外个接口,你电器接头必须实现有三插的接头规范。接口就是个规范而已。
     
     
     
     比如说 
     有个座充,它可以充诺基亚,可以充索爱,只要电池的型号一样。
     而你自己带的可能只可以给自己的手机充电。
     那么这个座充就可以看做是接口,它可以插不同的电池,只要规定一定的规格。它不考虑你是哪个品牌的手机。
     或者说  
     拿电脑的驱动来说。当你换了一个新的硬件,你就必须装驱动。
     每个硬件的驱动都不一样,但是操作系统都可以操作他们,这样他们也是实现了接口。
     还有许多洋娃娃,他们可以换不同的衣服。
     接口使程序更加灵活,机动性号,你喜欢一个可以拼接的玩具,而不是一个整的。
     数学中,拆分思想无处不在。同样,语言只是,数学思想的延续 
     
     
     
     这个问题比较抽象,不过俺给你举个例子,希望对你的理解可以起到微薄之力。
     就举一个院长和病人的例子吧,院长就相当于一个接口啦,病人就是普通的类,那么抽象类是什么呢,抽象类就是医院下面的科长啦,比如:胃肠科,眼科等等。当病人去医院就诊,病人不太可能直接找院长治疗,而是去对应的科去挂号治疗。院长就会舒服多了,用程序表示呢,院长会有一个接口叫‘治疗’,科长会实现这个接口,所以科长也会有这个方法的,注意科长是抽象类,所以呢,科长只会继承和他相关的接口,比如财务的接口,科长同志就无需实现啦,这是抽象类的好处,嘿嘿。当然,院长不只一个接口,医院的所有接口,院长同志都应该有的,下面的科长(抽象类)分类继承就是啦,各继承各的,世界就美好了!


     1. 从定义中,“接口方法可以在不同的方法被不同的类实现”,说明使用接口能够方便的去扩展,比如你在client中调用了一个接口,以后想用其他的实现,只需要重写一个实现类并扩展工厂就行了。
     2. 可复用性,比如大型项目中,将Hibernate换成Ibatis的时候,可以只需要在Spring中配置实现类就可以替换了。接口属性能够方便的配置。 
     3.项目开发人员的分工 
     当接口定义好后,不同模块的开发人员可以先根据接口的定义开发自己的模块,提高了开发效率 
     4.方便早期的设计和以后的扩展 
     接口最原始的作用在于定义一些规则,这些规则包括业务规则等,当接口定义好之后,就已经确定了大部分宏观的业务逻辑,系统的扩展性和可维护性自然会得到提高。 
     5.Facade模式的使用 
     通过定义接口,可以更好的使用Facade模式。将整个系统的功能模块化。

     

     
     在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解。
     刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方法不就行了吗?
     为什么一定要有抽象类这个概念?为什么就不能把这个父类写成一个具体的类,子类再继承它不就可以了吗?何必弄一个抽象类出来,还要弄一些没有方法体的抽象方法,弄得又象接口又象类的,让人捉摸不定。
     当我开始学习java设计模式,真正走进面向对象设计的大门之后,我才发现,自己对面向对象设计的理解原来是那么的片面,那么的肤浅,根本就没有真正理解面向对象思想的精髓,在某一种程度上还受着面向过程的影响,以为弄出了一个个类,就算是面向对象了,而其实还是被过程所驱使着。
     我还是说说我现在对面向对象思想的理解吧,不一定正确全面,但我想应该还算是比以前略有进步吧。
     面向对象思想,我觉得最关键的就是抽象。
     一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了。当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用呢,面对对象的设计,复用的重点其实应该是抽象层的复用,而不是具体某一个代码块的复用,是不是一下子感觉自己对复用理解的高度又上升了一层?^_^
     说到了抽象,我就不能不提到曾让我头痛的Java接口和Java抽象类了,这也是本文我想说的重点。
     既然面向对象设计的重点在于抽象,那Java接口和Java抽象类就有它存在的必然性了。
     Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现。OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程,正确地使用接口、抽象类这些太有用的抽象类型做为你结构层次上的顶层。
     Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了。
     1、Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。
     如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。
     2、一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。
    在这一点上,Java接口的优势就出来了,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
     3、从第2点不难看出,Java接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。
     4、结合1、2点中抽象类和Java接口的各自优势,具精典的设计模式就出来了:声明类型的工作仍然由Java接口承担,但是同时给出一个Java抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类,也就是说在层次结构中,Java接口在最上面,然后紧跟着抽象类,哈,这下两个的最大优点都能发挥到极至了。这个模式就是“缺省适配模式”。
     在Java语言API中用了这种模式,而且全都遵循一定的命名规范:Abstract +接口名。
     Java接口和Java抽象类的存在就是为了用于具体类的实现和继承的,如果你准备写一个具体类去继承另一个具体类的话,那你的设计就有很大问题了。Java抽象类就是为了继承而存在的,它的抽象方法就是为了强制子类必须去实现的。
     使用Java接口和抽象Java类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转换等。而不要用具体Java类进行变量的类型声明、参数是类型声明、方法的返还类型说明,以及数据类型的转换等。
     我想,如果你编的代码里面连一个接口和抽象类都没有的话,也许我可以说你根本没有用到任何设计模式,任何一个设计模式都是和抽象分不开的,而抽象与Java接口和抽象Java类又是分不开的。 
     理解抽象,理解Java接口和抽象Java类,我想就应该是真正开始用面向对象的思想去分析问题,解决问题了吧。

    展开全文
  • 参考:新人浅谈实际开发中对于java接口的认知
    展开全文
  • Java8里面接口里面有个default关键字可以使用,表示在接口里面声明的方法,可以有默认的实现。具体使用如下: 假设现在,系统里面的缓存类都实现了下面的接口。这个接口就一个方法,resetCache。每个实现都需要...

    一般,接口的作用,为的是扩展,或者归类。相比抽象类,只能单个继承,接口,可以实现n多个,这是接口的优势。在Java8里面接口里面有个default关键字可以使用,表示在接口里面声明的方法,可以有默认的实现。具体使用如下:

    假设现在,系统里面的缓存类都实现了下面的接口。这个接口就一个方法,resetCache。每个实现都需要自定义的实现这个方法。

    /**
     * 重置缓存
     */
    interface ICacheReset {
        /**
         * 重置缓存
         */
        void resetCache();
    }

    但是,事后发现,这个resetCache方法,没带参数,直接就把某个缓存全给重置了,很浪费性能,得给这个方法加个参数才行。

    怎么办,在这个接口里面再声明个方法?

    interface ICacheReset {
    
        /**
         * 重置缓存
         */
        void resetCache();
    
        /**
         * 重置缓存某个类型的缓存
         *
         * @param type 类型
         */
        void resetCache(String type);
    
    }

    然后,问题来了,之前实现这个接口的类都异常了,说是,有方法未实现,你的把每个实现这个接口的类都的实现一下新添加的这个接口方法。

    大师兄

    这肯定不是很好的啦,牵一发而动全身,不行不行。

    怎么办呢?

    这个新特性就有用武之地啦。

    interface ICacheReset {
    
        /**
         * 重置缓存
         */
        void resetCache();
    
        /**
         * 重置缓存某个类型的缓存
         *
         * @param type 类型
         */
        default void resetCache(String type) {
    
        }
    
    }

    这么着之后,原来的实现这个接口的类,就不会报错了,你只需要在你需要override这个方法的地方,再给他override一下就好,因为,他在接口里面已经有了默认的实现。就是啥事儿也没干。你不override也没事。

    大师兄

    展开全文
  • JAVA接口

    千次阅读 热门讨论 2021-03-21 20:17:56
    接口使用 类实现接口 1.接口不能创建对象 2.定义实现类,实现接口 3.重写方法 4创建实现类对象 调用方法 public class 类 impelemnts 接口{ 重写方法 } 1. 接口的成员特点 1.接口没有构造方法 2.接口中的...
  • java中外部接口与内部接口使用

    千次阅读 2019-06-24 20:07:57
    什么是内部接口? 内部接口也称为嵌套接口,即在一个接口内部定义另一个接口。举个例子,Entry接口定义在Map接口里面 public interface Map { interface Entry{ int getKey(); } void clear(); } 为...
  • java web设计中 使用接口好处

    千次阅读 2015-05-13 11:03:11
    采用标准的架构:描述从低层到高层 首先是系统分析,找出你需要什么...持久层(Hibernate、JPA、JDBC):这一层的目的很明确,就是ORM,这里还不用你定义接口和类, 你只要使用框架就可以了。 DAO层(Data Access O
  • Java为什么要使用接口

    千次阅读 2016-07-14 16:59:45
    面向接口编程的好处: 1.根据客户提出的需求提出来,作为接口的;业务具体实现是通过实现接口类来完成的。 2.当客户提出新的需求时,只需编写该需求业务逻辑新的实现类。 3.假如采用了这种模式,业务逻辑...
  • 对于Java程序员来说,java语言的好处和优点,我想不用我说了,大家自然会说出很多一套套的。但虽然我们作为java程序员,但我们不得不承认java语言也有一些它本身的缺点。比如在性能、和底层打交道方面都有它的缺点。...
  • java基础—继承能实现的为什么要使用接口接口的在java中的作用! 1、最明了的作用:在java中只能单一继承,接口可以解决无法多继承的问题,java里面可以同时实现多个接口接口不仅能体现代码的拓展性,而且还提高...
  • Java接口

    千次阅读 2016-04-08 15:16:58
    本文是《Java核心技术 ...一个类可以实现(implements)一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。 接口不是类,而是对类的一组需求描述,这些实现这个接口的类要遵从接口描述的同一格
  • java7,包含的内容有:java8,包含的内容有:java9,包含的内容有:二、使用步骤1.引入库2.读入数据总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、java接口是什么? -接口就是一种公共的规范...
  • Java项目中用接口好处是什么?

    千次阅读 2019-07-09 21:05:09
    使用接口其实就有点像实现虚函数的调用一样, 用继承接口的子类实例化声名得接口就可以经过接口调用子类外部接口定义的函数。 使用这种接口方式编程, 如果业务逻辑发生变化需求新增类多办法, 就可以在不改动...
  • Java接口好处

    千次阅读 2018-02-02 04:49:43
    首先不懂什么是interface的可以参考这里 ... 接口特性 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修...
  • Java 接口的作用与好处

    千次阅读 2019-05-12 19:50:53
    二、抽象类和接口都差不多,在什么时候才选择使用接口? 以下是详细说明: https://blog.csdn.net/JLongSL/article/details/54885780 现在总结一下文章一开始提出的两个问题 一、明明可以在类中直接写所需的方法,...
  • Java RMI远程接口调用介绍与使用

    千次阅读 2016-06-01 18:59:08
    Java RMI 实现代码动态下载 stub 和 skeleton 的讲解,自己实现一个stub和skeleton程序虽然现在在分布式中RMI已经很少用到,但作为最简单的分布式应用,我们还是稍微了解一下好,这篇文章可能有我理解错误的地方...
  • Java接口详解

    千次阅读 多人点赞 2016-08-03 12:40:22
    抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更加特殊的”抽象类“——接口(interface),接口里包普通方法,接口里的所有方法都是抽象方法。Java 8对接口进行了改进,允许在...
  • java为什么项目中需要使用接口

    千次阅读 2019-04-21 14:35:40
    一、为什么项目中需要使用接口? 在项目中,有一些功能,不仅仅是一个类去实现,即有很多地方有用到,大家需要统一标准。所以需要用接口,这样大家同时实现一个接口,就能够统一规范。在接口中只是定义了基本的方法...
  • java为什么要使用接口回调

    千次阅读 2016-05-03 21:48:06
    也许你在编程的过程中会发现这样一行代码:格式如: 接口 接口变量 = new 接口 子类();Link<String> link = new ArrayList(); //Link为一个接口 ArrayList...但是为什么要这样使用呢?其优点在哪里?有什么缺点?在回
  • JAVA 实现Runnable接口

    千次阅读 2017-12-11 09:10:45
    如有侵权,请作者联系我删除博客,谢谢 //仅作为学习笔记 ...创建线程的第二种方式:实现Runnable接口 步骤: 1,定义类实现Runnable接口 2,覆盖Runnable接口中的run方法 将线程要运
  • java中面向接口编程的好处

    万次阅读 2016-03-15 20:33:05
    像J2EE中的API规范基本上都是接口,由各应用服务器来实现,比如:WebSphere按照这个接口实现自己的,WebLogic也按照这个接口实现自己的,作为开发者来说我们根本就不用去管谁是怎样实现的,只要按照J2EE的API来写就...
  •  Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现;  也就是说,接口自身自提供方法的基本声明,而不提供方法体;接口中声明的方法只能被实现该接口的子类所具体实现。...
  • 接口A继承接口B作用: 1.接口A中不用重写接口B中方法  2.接口A的实现类必须实现接口A中定义的方法以及接口B中定义的方法。在实例化此实现类过程中恰恰体现了多态的特性,实例化对象可调用接口A、B中所有方法。 ...
  • java做http接口

    千次阅读 2017-10-10 16:11:15
    但是我不知道用java怎么做这个接口。请大家详细给我讲讲。从开发到如何发布到服务器。谢谢了 Javahttp接口  2014年6月12日 17:27 Longdd_JS  1  0 0 9 添加评论 关注(0) ...
  • 4.3 Java 接口

    千次阅读 2014-07-04 17:52:09
    《编程导论(Java)·4.3Java接口》 随着Java8的出现,本节面临尴尬的局面。
  • Java 接口与枚举

    2019-07-14 14:03:16
    一、Java中的接口 1、接口 多个抽象类的抽象就是接口。用 interface 来声明接口。 在Java中最小的程序单元是类,接口其实是一个特殊的类.,编译之后,和类一样具有一份字节码 Java接口表示规范,用于定义一组...
  • java 接口的作用和好处

    千次阅读 2017-05-16 14:42:35
    1、java 接口的作用  http://blog.csdn.net/hack_bug/article/details/7634737   2、一位Java大牛的回答   很多JAVA初级程序员对于接口存在的意义很疑惑。不知道接口到底是有什么作用,为什么要定义接口。 ...
  • 一、为什么项目中需要使用接口? 在项目中,有一些功能,不仅仅是一个类去实现,即有很多地方有用到,大家需要统一标准。所以需要用接口,这样大家同时实现一个接口,就能够统一规范。在接口中只是定义了基本的方法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 253,019
精华内容 101,207
关键字:

java里使用接口好处

java 订阅