`
lantian_123
  • 浏览: 1361071 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

谈谈接口

    博客分类:
  • Java
 
阅读更多

 

接口

一、此接口非彼接口

   接口有两种定义:一种是我们常说的API(application program interface)应用程序接口,这类接口是有应用服务提供商或第三方软件厂商提供。如Java就提供了不少非常强大的API,各种开放应用平台也纷纷提供自己的API接口供程序员使用。第二种就是我们接下来重点要说的Java语言规范中提供的一种特性(Interface)

 

二、什么是接口(Interface

 

   通俗的讲接口就是一种规范,生活中的一个例子就是我们的每个人都在用的插线板,插线板定义了有两孔的插孔,三孔插孔、或者其他特殊的插孔,各种电器只要按照插线板的规范去制作就肯定可以接上电源。而插线板也根本不需要知道具体知道是什么东西接在我这个插孔中。

 

   Java语言规范中对接口的定义:一个接口就是一些方法特征的集合,所谓的方法特征就是指该方法只有描述而没有具体实现怎么做,好比一个乘法计算的方法只是申明一下,但并不去解决怎么把这个乘法算法的过程和结果写出来。接口就是一种抽象化的表现,但他比抽象类更抽象。(了解抽象类可以看以后写的博客或者查阅其它资料)。我们可以把电影中角色和演员分别比作接口和具体的实现类。

 

三、接口定义:

 

public interface Expression{
		public static final int num1 =1;
		public static final int num2 =2;
		boolean getResult();
}
   

四、接口的一些特性:

   1、接口中的方法的声明默认是public abstract修饰的。

   2、接口中可以包含有public static final 修饰的常量。

   3、一个类可以实现多个接口。

 

五、接口的用途:

   接口在Java语言中有着举足轻重的地位,几乎所有框架的设计都离不开接口,那它究竟用什么做用呢?

   其实接口是对Java多态特性一种很好的实现。我们来设想有这样一个情景:老师一天给学生分配一个任务就是为一个软件实现一个乘法的功能,于是该同学很快就开始写好了如下一个类:

 

public class Client{
    public static void cacl(int num1,int num2){
        System.out.println(num1*num2);
    }
}
   

如果系统不再需升级,此方法无疑是最好的一种方式,但是我们总是会不安于现状,突然几天后老师根据客户的需要又要求我们实现一个除法的功能,我们只好勉为其难的添加了一个新类,然后修改了下Client,变成了如下:

 

public class Client{
       public static void cacl(int num1,int num2,String opt){
        if("*".equals(opt)){
            System.out.println(num1*num2);
        }else if("/".equals(opt)){
            Sysetm.out.println(num1/num2);
        }
    }
}
 

 

设想一下,如果以后老师还有更多的需求,我们就的写上长长的一段if else 语句来判断了,这可不是一个很好的设计。于是乎接口派上用场了。看看下面的代码:

 

public interface Expression{
    int result(int num1,int num2);
}
 
public class multiExpression implements Expression{
   
    public int result(int num1,int num2){
        return num1*num2;
    }
   
}
 
public class Division implements Expression{
 
    public int result(int num1,int num2){
        return num1/num2;
    }
}
 
public class Client{
    public static void cacl(Expression exp,int num1,int num2){
        System.out.println(exp.result(num1,num2));
    }
}
 

 

我们发现Client类中只有一行代码了,非常的精简,以后在有其他的计算需求,我只需写一个新的类就行。根本的不用去修改Client类了。

   接口同时使用在很多种设计模式上。(最后写完这文章,发现一点都不深入,暂且适用于入门读者吧)。

分享到:
评论

相关推荐

    第13讲 谈谈接口和抽象类有什么区别?1

    接口是对行为的抽象,它是抽象方法的集合,利用接口可以达到 API 定义和实现分离的目的。除了不能实例化,形式上和一般的 Java 类并没有太大区别,可以有一个或

    cardhunt:步枪通过一些卡

    卡寻通过展示Magic:从收集数据来演示React.js。为什么React这么好? 这只是视图层。 它强烈执行良好的绑定惯例。 将浏览器中的重排保持在...让我们来谈谈接口程序的最纯形式没有接口。 域是一个代码核。 但是,为了

    工厂模式与面向接口配合实现深度解耦

    在Java和C#的编程世界里,并没有出现像C++那样的多脉继承,它们只支持单一的继承,或者多级继承,这一变化最大的影响,我觉得是大大的降低了编程的...今天就来谈谈我对Java中面向接口编程的看法,以及个人的一些改进。

    接口自动化测试方案.docx

    随着科技的不断发展,越来越多的产品开始实施自动化测试,自动化测试也是未来发展的一个趋势,面对这种趋势,我们应该怎么来实施自动化测试呢 ,如何来选择自动化测试框架呢,下面我就来谈谈自动化测试框架 ...

    单片机ARM常用的接口总结

    常用的接口有spi,I2c,uart等,他们都有自己的协议规定,下面谈谈它们之间的联系与区别。

    面向对象编程中“粒度”的概念

    面向对象编程中“粒度granularity”的概念

    Java面试题,他会给你很好的Java面试准备,第一,谈谈final, finally, finalize的区别,第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

    很好的Java面试题第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

    聊一聊C#接口问题 新手速来围观

    接下来就来谈谈我这段时间对接口使用的粗浅见解,说的对希望大家赞,说的有误的地方希望大家多多包涵建议!  READY GO!  接口的定义就不多说了,它有一个很重要的知识点,就是所有继承这个接口类的都必须实现...

    C# WebApi 接口传参详解

    主要介绍了C# WebApi 接口传参详解,本篇打算通过get、post、put、delete四种请求方式分别谈谈基础类型(包括int/string/datetime等)、实体、数组等类型的参数如何传递。感兴趣的小伙伴们可以参考一下

    Java重写与重载(区别与用途)

    我根据我的理解来谈谈Java中重写方法与重载方法的区别。  重写  Java 中重写又叫覆盖,主要是指继承(extends)父类或者实现(implements)接口时将父类或者接口中已经存在的方法进行重新定义。重写的方法在父类...

    利用有限的测试资源在项目中开展单元测试和接口测试

    利用有限的测试资源在项目中开展单元测试和接口测试 软件测试 对于单元测试和接口测试的概念,我想即便是刚刚毕业参加工作的测试工程师都能在面试的时候说得出个一二三,市面...以下便是结合自己的实际经验,谈谈如何

    谈谈操作系统

    操作系统是在计算机硬件上封装的第一层系统软件,从系统角度看,它起着软硬件接口的作用,操作系统的主要功能是管理计算机软、硬件资源,控制程序的执行,提供用户接口以及为用户提供操作服务等

    Ackerly#Article#谈谈依赖和解耦1

    但是这样难以维护,所以我们想要进行拆分,便于维护,拆分为多个文件后,存在引用其他文件的情况,这时候就产生了依赖接口管理进行代码优化的时候,通常将通用的功能抽象成

    java面试宝典

    243、remote接口和home接口主要作用 56 244、客服端调用EJB对象的几个基本步骤 56 245、 如何给weblogic指定大小的内存? 56 246、如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 57 247、如何启动时不需...

    wenfujie#document-library#谈谈对BFF的理解1

    优势服务端无需过多关心前端界面,只需提供粗粒度的接口琐碎的api及数据处理都由前端决定,更能适配到前端不同平台BFF借助插件能生成Api文档,无需后端单开这类服

    谈谈嵌入式操作系统的调试问题

    前者,调试器与被调试的程序往往是运行在同一台机器、相同的操作系统上的两个进程,调试器进程通过操作系统专门提供的调用接口(早期UNIX系统的ptrace调用、如今的进程文件系统等)控制、访问被调试进程。后者(又称为...

    谈谈IntersectionObserver懒加载的具体使用

    IntersectionObserver接口(从属于Intersection Observer API)为开发者提供了一种可以异步监听目标元素与其祖先或视窗(viewport)交叉状态的手段。祖先元素与视窗(viewport)被称为根(root)。 这是MDN上给的官方概念,...

    .Net WInform开发笔记(三)谈谈自制控件(自定义控件)

    这次谈谈自制控件,也就是自定义控件,先上图,再说 1.扩展OpenFileDialog,在OpenFileDialog中添加各种文件(.txt,.jpg,.excel等等)的预览功能 2.重写ListBox,增加折叠、鼠标背影、分类等功能 ————————...

    基于Linux的移动电话开发技术及前景

    正当移动电话制造商拥抱Linux作为下一代智能电话的平台的时候,开发和布置这样的设备还在面临着技术上的挑战,特别的是OEM们必须保证电话具有电源管理,快速引导,集成的无线接口,吸引人的小尺寸GUI以及各种的PIM...

Global site tag (gtag.js) - Google Analytics