精华内容
下载资源
问答
  • 更多相关内容
  • 主要介绍了java interface 接口使用好处,结合实例形式分析了java interface接口的功能、基本使用方法及多态性的使用优点,需要的朋友可以参考下
  • 什么时候应该在Java使用接口

    千次阅读 2021-02-13 01:48:54
    什么时候应该在Java使用接口?一个理想的例子是什么时候确切地使用Java中的特定接口,以及适用的任何特定规则。Julio asked 2020-02-17T01:40:08Z12个解决方案66 votes集合框架是一个不错的选择。java.util.List /...

    什么时候应该在Java中使用接口?

    一个理想的例子是什么时候确切地使用Java中的特定接口,以及适用的任何特定规则。

    Julio asked 2020-02-17T01:40:08Z

    12个解决方案

    66 votes

    集合框架是一个不错的选择。

    java.util.List //interface

    java.util.ArrayList //Concrete class

    java.util.LinkedList //Concrete class

    因此,您可以编写如下代码:

    List l = new ArrayList();

    l.add(..)

    //do something else.

    如果将来您想要更改说LinkedList的实现或拥有自己的27508920789966530530接口,那么您要做的就是将第一行更改为:

    List l = new MyAwesomeList();

    or

    List l = new LinkedList();

    其余代码将继续进行。

    coolest_head answered 2020-02-17T01:41:03Z

    35 votes

    使用接口定义“第三方”供应商必须完全遵守和实现的应用程序编程合同(蓝图,接口)。 这样,最终用户就可以根据API合同进行编码,并且可以轻松地在“幕后”切换具体的实现,而无需更改代码。

    JDBC API是一个很好的例子。 它几乎只存在接口。 具体实现以“ JDBC驱动程序”的形式提供。 这使您能够独立于数据库(DB)供应商编写所有JDBC代码。 每当您要切换数据库供应商时,只需更改JDBC驱动程序而无需更改任何Java代码行(任何硬编码的特定于DB的SQL代码除外)。

    另一个示例是Java EE API,它还包含很多接口和抽象类。 具体实现以“ Java EE应用程序服务器”,“ Servlet容器”等(例如Sun Glassfish,Apache Tomcat等)的形式提供。这使您可以将Web应用程序(WAR)部署到所需的任何Java Web服务器上。

    BalusC answered 2020-02-17T01:40:30Z

    14 votes

    在您希望程序波动的地方,需要更改的地方,需要弯曲的地方都需要接口。

    从这个意义上说,实现是脆弱的:它很容易中断。 这就是为什么子类化不一定总是最好的解决方案的原因,就像长距离执行的方法本身全部实现某些复杂行为一样,通常是个坏主意。

    接口比实现更灵活,并且可以在程序设计上处理更多的压力。

    通过在程序中引入接口,您实际上引入了变化点,您可以在该点上插入该接口的不同实现。 接口的主要目的是抽象,将“什么”与“如何”分离。

    安全记住这一重要规则是Liskov替代原则[UncleBob,维基百科]。 虽然使用Java之类的语言进行的编译器将确保语法上的所有内容都正确无误(参数,类型等的正确数量),但是LSP处理语义。 简而言之,LSP表示,接口的每个实现都必须(也)正确地发挥自身作用,以便如上所述能够真正被替换。

    eljenso answered 2020-02-17T01:41:42Z

    6 votes

    从oracle文档页面

    如果满足以下条件,请考虑使用接口:

    您期望不相关的类将实现您的接口。 例如,许多不相关的对象可以实现Serializable接口。

    您想指定特定数据类型的行为,但不关心谁实现了它的行为。

    您想利用类型的多重继承。

    看看相关的SE问题以及代码示例,这些示例已经有了很好的答案。

    除了拥有正确的方法之外,接口还有更多其他功能

    接口和抽象类之间有什么区别?

    我应该如何解释接口和抽象类之间的区别?

    Ravindra babu answered 2020-02-17T01:42:37Z

    4 votes

    在链接文本中查看JDK收集教程。 考虑收藏。 你想到什么? 它可以订购,也可以不订购,也可以重复。

    因此,Collection是一个以List(有序)和Set(无序)为子接口的接口。 现在,列表有很多问题,是否应该同步,是否应该是链表等等。每个“行为”都有自己的接口/抽象类。

    当您要在集合中指定“某些”行为时,需要抽象类。 例如,所有集合(集合/列表等)都可以具有“ toString”表示形式,该表示形式仅对元素进行迭代(有序/无序)并将其字符串化。 该行为可以出现在“ AbstractCollection”等中。

    如果遵循JDK集合的层次结构,那么它是学习接口和抽象类的绝佳场所:)

    Kannan Ekanath answered 2020-02-17T01:43:11Z

    4 votes

    尝试了解策略设计模式

    Boris Pavlović answered 2020-02-17T01:43:31Z

    3 votes

    当需要相同行为的多个实现时,将使用接口。 这是对象可以实现的接口示例,以表明它们都可以序列化为XML。

    public interface Xmlizable

    {

    public String toXML();

    }

    那么您可以将“ Xmlizable”接口传递给只关心该接口的方法。

    answered 2020-02-17T01:43:55Z

    3 votes

    基本上,当您需要“省略”一些实现细节时,可以在接口和抽象类之间进行选择。 接口通常是更好的选择,因为客户端类可以实现任何数量的接口,但是它们只能具有一个超类(如他们所说,“继承是一种稀缺资源”)。

    为什么要抽象类或接口? 因为有时候,当您编写算法时,您并不关心它的特定子步骤是如何完成的,而只是根据某种合同来完成它。 一个示例就是Collections API,其中List是一个接口-通常,当您使用AbstractList时,您实际上并不关心它是否将内容保存在数组,节点的链接列表或其他某种形式的文件中。 办法。 只要它按照您放入的顺序存储放入其中的东西,您就很高兴。

    然后我们有AbstractList:实现List的抽象类,该类提供了List几乎所需要的几乎所有内容的实现-要创建自己的List实现,您要做的就是扩展AbstractList并填写一些方法。 这是一个很好的例子,说明抽象类是一个不错的选择-当您想要提供某种东西的几乎完整的实现时,它只缺少一些空白,需要由客户端代码来填补。

    提示:如果您创建一个仅包含抽象方法的抽象类,则可能应该为其创建一个接口。

    gustafc answered 2020-02-17T01:44:31Z

    3 votes

    这个答案与coolest_head的答案基本相同,只是在传达有用性方面更为明确。

    正如coolest_head解释的那样,当您将来可能希望在程序的可能子组件之间切换时,接口很有用。 它们还使您可以更轻松地将程序结构各部分的关注点分开,因为使用接口可以确保某些不相关的类等对于程序的其他部分而言是不可见的。

    例如,假设您要读取任意数据并进行打印,如下所示:

    SomeReader someReader = new SomeReader();

    String data = someReader.readLine();

    System.out.println(data);

    这里没什么好看的,对吧? 但是,尽管此示例很简单,但已与new类绑定,这意味着您对该类所做的所有更改都必须传播到您使用该类的类中,尤其是在重构某些内部组件时! 相反,您想这样做

    IMyReader reader = new SomeReader();

    System.out.println(reader.readLine());

    您差不多就在那里了-现在打印代码不再关心特定的实现,而只关心界面暴露的部分。 这通常就足够了,因为现在您只需切换一个new语句,就可以得到新的实现以及仍然可以按预期运行的任何实现(只要在实现类中遵守接口的约定!)。 当您最终多次使用一个特定的对象时,这特别方便-在这里我只使用一次,但实际上,如果您使用的是例如列表,则通常要执行同一列表的多少个操作?

    因此,要真正使这个示例不成比例,这就是您的代码可能最终看起来像的样子

    public class RowPrinter {

    private final IMyReader reader;

    public RowPrinter(IMyReader reader) {

    this.reader = reader;

    }

    public void print() {

    IMyReader reader = getReader();

    System.out.println(reader.readLine());

    }

    protected IMyReader getReader() {

    return reader;

    }

    }

    注意构造器的那一部分吗? 那是控制的倒置,让我告诉您,那是那里的一个很棒的软件工程。 从经验上我可以说,无论是从数据库产品切换到另一种产品,还是使代码线程的某些部分安全,它都可以为您带来很多麻烦。 或者,也许您只想向某个类添加一个日志记录层,就可以使用包装装饰器轻松实现该功能,该包装装饰器恰好实现与包装的类相同的接口。 而这仅仅是个开始。

    界面带来了很多好处,尽管简单的示例确实可以使您正常工作,但通常从简单的示例中并没有那么明显。 尽管Java中的接口是一种语言构造,但它们实际上更像是一种编程范例,而不仅仅是一种语言的功能,在某些语言中,如果您找出正确的接口方式,那么对接口进行仿真确实是非常有益的。

    Esko answered 2020-02-17T01:45:25Z

    2 votes

    OOP的基本原理是信息隐藏:隐藏实现细节,仅向调用者显示基本服务的描述。

    Java必须为此目标构造:接口和抽象类。 您可以定义一个接口并编写代码,使其仅依赖于该接口,方法是调用其中定义的“可用方法”。

    信息隐藏可用于读取外部类(在某种意义上来说,外部是外部的,它在您正在编写的模块之外)-这样,您可以定义所需的方法,而无需推断其具体实现类型-或何时 定义在您的类之外可用的数据类型-例如,典型的例子是 如前面已经提到的,Collection API或J2EE。

    接口和抽象类都提供了这些详细信息-但是有两个主要区别:接口支持多重继承,而抽象类可以容纳基本实现。 为了最大程度地提高它们的效率,在定义接口时,还应该定义一个有意义的默认实现的抽象类。 如果接口的用户不需要扩展任何其他类,则可以扩展此抽象类,否则它需要从接口实现所有方法。 另一方面,请确保不要直接读取此抽象类,该接口应足以作为抽象。

    Zoltán Ujhelyi answered 2020-02-17T01:46:00Z

    2 votes

    远程通讯接口:

    接口也可以用于定义一个约定的“协议”,以便可能通过远程调用在系统的不同部分之间进行通信。 因此,接口仅定义可以调用的内容,参数以及调用后将返回的内容。 客户端使用该接口,而服务器则实现具体的实际代码。

    边注:

    在Java中,您只能从一个类中固有(扩展),但是您可以实现多个接口,因此有时当您需要这种多重继承并且决定不对继承使用合成时,必须使用接口。

    bakkal answered 2020-02-17T01:46:34Z

    1 votes

    每当您计划在某个开发点将实现类替换为另一个类时,请使用接口。

    我还建议至少在更严重的项目中对继承关系中的所有类都使用接口后端:不幸的是,我不再具有链接,但是使用Java语言的开发人员曾经说过,包括类继承是最大的错误。 设计语言。

    这些参数非常好:使用适当的设计,总是可以用接口继承替换类继承,并且您会获得很多有关代码维护的知识。 与使用类继承相比,保留自然类型关系(例如,根据几何图形(“正方形是矩形”))也更容易。

    Searles answered 2020-02-17T01:47:04Z

    展开全文
  • 主要介绍了Java调用第三方接口示范的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 根据带注释的类文件的公共方法生成Java接口。 为类或接口生成Decorator接口 好处 只有一个实现时,无需手动维护接口 帮助诸如Spring之类的框架进行依赖注入 Spring运行时注入默认情况下需要一个Interface,否则...
  • Java 中的接口有什么作用?好处

    千次阅读 2021-03-04 00:06:48
    接口的作用就是把使用接口的人和实现接口的人分开,实现接口的人不必要关心谁去使用,而使用接口的人也不用关心谁实现的接口,由接口将他们联系在一起。很多JAVA初级程序员对于接口存在的意义很疑惑。不知道接口到底...

    接口的作用就是把使用接口的人和实现接口的人分开,实现接口的人不必要关心谁去使用,而使用接口的人也不用关心谁实现的接口,由接口将他们联系在一起。

    很多JAVA初级程序员对于接口存在的意义很疑惑。不知道接口到底是有什么作用,为什么要定义接口。

    好像定义接口是提前做了个多余的工作。下面我给大家总结了4点关于JAVA中接口存在的意义:

    1、重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。

    2、简单、规范性:如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口不仅告诉开发人员你需要实现那些业务,而且也将命名规范限制住了(防止一些开发人员随便命名导致别的程序员无法看明白)。

    3、维护、拓展性:比如你要做一个画板程序,其中里面有一个面板类,主要负责绘画功能,然后你就这样定义了这个类。

    可是在不久将来,你突然发现这个类满足不了你了,然后你又要重新设计这个类,更糟糕是你可能要放弃这个类,那么其他地方可能有引用他,这样修改起来很麻烦。

    如果你一开始定义一个接口,把绘制功能放在接口里,然后定义类时实现这个接口,然后你只要用这个接口去引用实现它的类就行了,以后要换的话只不过是引用另一个类而已,这样就达到维护、拓展的方便性。

    4、安全、严密性:接口是实现软件松耦合的重要手段,它描叙了系统对外的所有服务,而不涉及任何具体的实现细节。这样就比较安全、严密一些(一般软件服务商考虑的比较多)。

    作者:Dion

    链接:https://www.zhihu.com/question/20111251/answer/14012223

    来源:知乎

    能问这个问题,说明(1)你很会思考(2)编程水平还是处于起步阶段。

    “接口是个规范”,这句没错。

    “不如直接就在这个类中写实现方法岂不是更便捷”,你怎么保证这个接口就一个类去实现呢?如果多个类去实现同一个接口,程序怎么知道他们是有关联的呢?

    既然不是一个类去实现,那就是有很多地方有用到,大家需要统一标准。甚至有的编程语言(Object-C)已经不把接口叫 interface,直接叫 protocol。

    统一标准的目的,是大家都知道这个是做什么的,但是具体不用知道具体怎么做。

    比如说:

    我知道 Comparable 这个接口是用来比较两个对象的,那么如何去比较呢?

    数字有数字的比较方法,字符串有字符串的比较方法,学生(自己定义的类)也有自己的比较方法。

    然后,在另外一个负责对象排序(不一定是数字喔)的代码里面,肯定需要将两个对象比较。

    这两个对象是什么类型呢?

    Object a,b?肯定不行,a > b 这样的语法无法通过编译。

    int a,b?也不行?一开始就说了,不一定是数字。

    ....

    所以,Comparable 就来了。他告诉编译器,a b 两个对象都满足 Comparable 接口,也就是他们是可以进行比较的。具体怎么比较,这段程序不需要知道。

    所以,他需要一些具体的实现,Comparable 接口有一个方法,叫 compareTo。那么这个方法就是用来取代 这样的运算符。

    因为运算符是编译器保留给内置类型(整数、浮点数)进行比较用的,而不是一个广义的比较运算。

    如果你可以明白 JDK 自身库里面诸如 Comparable 这样已经有的接口,那么就很容易理解自己在开发程序的时候为什么需要用到接口了。

    展开全文
  • 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提供了一些本地接口,他主要的作用是提供一个标准的方式让java程序通过虚拟机与原生代码进行交互,这也是我们平常常说的java本地接口(JNI——java native Interface)。它使得在 Java 虚拟机(VM) 内部运行...
  • Java 接口的作用与好处

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

    2020-11-20 20:50:37
    接口一、接口语法1.1 基本使用1.2 和抽象类区别二、微观接口【重点 】三、接口规范四、接口实现多态五、接口常见关系六、常量接口七、宏观接口【重点 】7.1 概念7.2 回调原理7.3 接口好处 一、接口语法 1.1 基本使用...
  • java接口只有一堆定义好形参和返回值的方法名。我们常用接口去定义一种行为模式,然后再去由各自子类去实现方法,从而实现继承多态。 但如果把接口作为函数的参数呢? 真是种奇妙的多态实现方式,可以把其理解成一...
  • Java8里面接口里面有个default关键字可以使用,表示在接口里面声明的方法,可以有默认的实现。具体使用如下: 假设现在,系统里面的缓存类都实现了下面的接口。这个接口就一个方法,resetCache。每个实现都需要...
  • java spi使用详解

    千次阅读 2021-12-12 09:52:50
    一篇文章带你详细了解java中SPI的详细使用
  • Java中的抽象类和接口

    千次阅读 多人点赞 2022-04-08 15:17:42
    各位铁汁们大家好呀!今天让我们继续学习java,看看java中的抽象类和接口到底是什么? 里面也会讲到多态呀,一起来看看吧
  • java 接口&Object

    2022-03-16 18:35:15
    接口&Object 一、接口 接口: 接口的概念:接口一般情况下不创建对象 1、 接口是功能的一个集合,同时也是一种引用数据类型。接口是比"抽象类",更抽象的"类" 2、 接口只描述程序所应该具备的方法,这些方法都...
  • Java接口好处

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

    千次阅读 2021-02-12 17:18:59
    但是我不知道用java怎么做这个接口。请大家详细给我讲讲。从开发到如何发布到服务器。谢谢了解决方案如果你这个很简单的话,而且数量也很少,建议直接一个servlet解决了事。使用开源的webservice组件非常麻烦。无非...
  • 之前的博客中已经详细说明了接口,抽象类,普通类以及实例的作用了...在接触了java的web开发,或者其他编程语言开发,都会接触到“回调接口”。那么回调接口是如何实现的呢?其实原理很简单,就是利用了接口,通过面向
  • Java Mock模拟接口请求

    千次阅读 2021-12-17 17:42:39
    2、mock 数据的好处 (1)团队可以并行工作 有了Mock,前后端人员只需要定义好接口文档就可以开始并行工作,互不影响,只在最后的联调阶段往来密切;后端与后端之间如果有接口耦合,也同样能被Mock解决;测试过程中...
  • 原文网址:Java--反射--Type接口/子接口/子类--使用/应用/教程/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 Type 是java反射机制中提供的一个接口,用来表示java中的所有类型的接口。它们包括原始类型、参数化类型、...
  • Java使用接口好处 群网友回复:    我要开车去北京 不管你给我宝马还是BYD 我只管调用车的go()方法就行    能够实现2种类或是多种类所约定的一种概念约定,来使这2种类或多种类能以这个被实现的...
  • java中外部接口与内部接口使用

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

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

    2020-08-29 08:44:22
    本文通过结合接口的本质、面向对象编程与面向接口编程的关系以及一些作者自身的理解,向大家介绍了面向接口编程的一些东西,需要的朋友可以了解下。
  • 最近在看一本书 Java与模式,里面提了一句不建议使用常量接口,甚至举了个java源码的反例, 蛋疼的是没有说为什么? 查了网上一圈发现他们也是知道怎么做而不知道为什么这么做。 然后我只能找谷歌了,翻译后...
  • 可以这么说,函数式接口中只能有一个抽象方法,可以有实现的静态方法;@FunctionalInterface这个只是一个编译级的注解,用来检测你编写的函数式接口是否有错的@FunctionalInterfaceinterface TestInterface {public ...
  • Java中“接口”与“类”的关系

    千次阅读 2020-08-01 19:40:26
    接口与类的关系
  • Java接口public interface 类名接口Java方法的合集,用于给不同的类实现同名的方法,接口是一个只有抽象方法的抽象类,1、接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final所以接口中...
  • 【亲测】Java 接口自动化步骤

    千次阅读 2021-02-12 10:00:06
    GET请求(Maven)一、 src/main/java1、【地址--HOST】创建并设置配置文件(后缀名.properties的文本文件):存放接口请求的host地址2、【地址】TestBase.java类,所有接口请求测试的父类,写一个构造方法,实现加载读取...
  • 最近在做Android开发,之前做的JavaWeb项目多一些,大家知道Android开发语言也是使用的Java语言(虽然也有其他语言,如:kotlin)。...Java接口作为参数传递的两种方式实现方式一:预先准备待使用类TestCl...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 287,229
精华内容 114,891
关键字:

java里使用接口好处

java 订阅