精华内容
下载资源
问答
  • 单继承使得java简单,易于管理,但如果要克服单继承性的缺点就要使用接口技术,是一个类可以实现多个接口,用关键字interface关键字来定义一个接口。(1)接口声明:interface 接口名; 接口体:包括常量定义和方法定义...

    Java不支持多继承性,即一个子类只能有一个父类;单继承使得java简单,易于管理,但如果要克服单继承性的缺点就要使用接口技术,是一个类可以实现多个接口,用关键字interface关键字来定义一个接口。

    (1)接口声明:interface 接口名;    接口体:包括常量定义和方法定义,方法只允许声明不允许实现。

    (2)接口使用:class A implements print,add       或者  class A extends A1 implements print,add

    (3)当某个类使用接口的时候,必须给出所有方法的实现,方法的类型、参数一定要和接口的一致;接口的方法默认为public abstract,故类在实现时一定不能漏写public关键字;接口常量默认关键字为public static。

    (4)因为接口中只含有public static final 常量和public abstract方法,故在写接口的时候可以省略这些关键字。

    (5)如果接口的返回类型不是void,那么实现方法体的时候,至少要有一个return语句;如果接口的返回类型是void,可以除了大括号之外可以没有任何语句。

    (6)Java提供的接口都在相应的包中,可以通过引入包使用相应的接口;也可以自定义接口,一个源文件就是由类和接口来组成的。

    (7)类实现的接口的方法以及接口中的常量可以通过类的对象进行调用,常量也可以通过类名和接口名进行调用。

    (8)接口声明的时候,如果加上关键字public,那么接口可以被任一个类进行调用,如果没有public则为友好型接口,只能被同一个包内的类进行调用。

    (9)如果父类使用某个接口,那么子类也就使用了接口,不用再使用implements。

    (10)接口可以通过extends继承接口。

    (11)如果一个类声明实现一个接口但没有实现接口的所有方法,那么这个类一定得是abstract类。

    展开全文
  • 我们的程序对外提供很多接口,现在客户要求我们做一套接口管理系统,将所有程序所有的对外接口管理起来,但是不知道这个中间平台怎么转发数据,我不想在本地保留数据,感觉那样会影响效率,想直接将返回的数据,直接...
  • 大多数人认为,接口的意义在于顶替多重继承。众所周知Java没有c++那样多重继承...把不同类型的类归于不同的接口,可以更好的管理他们。java的精髓,我以为,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨...

    大多数人认为,接口的意义在于顶替多重继承。众所周知Java没有c++那样多重继承的机制,但是却能够实作多个接口。其实这样做是很牵强的,接口和继承是完全不同的东西,接口没有能力代替多重继承,也没有这个义务。接口的作用,一言以蔽之,就是标志类的类别(type

    of

    class)。把不同类型的类归于不同的接口,可以更好的管理他们。java的精髓,我以为,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。

    设计模式中最基础的是工厂模式(Factory),在我最近的一个很简单的应用中,我想尽量的让我的程序能够在多个数据库间移植,当然,这涉及很多问题,单是如何兼容不同DBMS的SQL就让人头痛。我们不妨先把问题简单化,只考虑如何连接不同的数据库。

    假设我有很多个类,分别是Mysql.java、SQLServer.java、Oracle.java、DB2.java,他们分别连接不同的数据库,统一返回一个Connection对象,并且都有一个close方法,用于关闭连接。只需要针对你的DBMS,选择不同的类,就可以用了,但是我的用户他会使用什么数据库?我不知道,我希望的是尽量少的修改代码,就能满足他的需要。我可以抽象如下接口:

    package org.bromon.test;

    public interface DB

    {

    java.sql.Connection openDB(String url,String user,String

    password);

    void close();

    }

    这个接口只定义两个方法,没有任何有实际意义的代码,具体的代码由实作这个接口的类来给出,比如Mysql.java:

    Package org.bromon.test;

    import java.sql.*;

    public class Mysql implements DB

    {

    private String

    url=”jdbc:mysql:localhost:3306/test”;

    private String user=”root”;

    private String password=””;

    private Connection conn;

    public Connection openDB(url,user,password)

    {

    //连接数据库的代码

    }

    public void close()

    {

    //关闭数据库

    }

    }

    类似的当然还有Oracle.java等等,接口DB给这些类归了个类,在应用程序中我们这样定义对象:

    org.bromon.test.DB myDB;

    使用myDB来操作数据库,就可以不用管实际上我所使用的是哪个类,这就是所谓的“开-闭”原则。但是问题在于接口是不能实例化的,myDB=new

    DB(),这样的代码是绝对错误的,我们只能myDB=new Mysql()或者myDB=new

    Oracle()。麻烦了,我还是需要指定具体实例化的是哪个类,用了接口跟没用一样。所以我们需要一个工厂:

    package org.bromon.test;

    public class DBFactory

    {

    public static DB Connection getConn()

    {

    Return(new Mysql());

    }

    }

    所以实例化的代码变成:myDB=DBFactory.getConn();

    这就是23种模式中最基础的普通工厂(Factory),工厂类负责具体实例化哪个类,而其他的程序逻辑都是针对DB这个接口进行操作,这就是“针对接口编程”。责任都被推卸给工厂类了,当然你也可以继续定义工厂接口,继续把责任上抛,这就演变成抽象工厂(Abstract

    Factory)。

    整个过程中接口不负责任何具体操作,其他的程序要连接数据库的话,只需要构造一个DB对象就OK,而不管工厂类如何变化。这就是接口的意义----抽象。

    展开全文
  • 前后端唯一联系变成了API接口,API文档变成了前后端开发人员&测试人员联系的纽带。所以一款强大的Restful API文档就变得至关重要了。而目前在后端领域,基本上是Swagger的天下了。 Swagger2综述...

    在这里插入图片描述

    一、前言

    现在都奉行前后端分离开发和微服务大行其道,前后端技术在各自道路上越走越远。
    前后端唯一联系变成了API接口,API文档变成了前后端开发人员&测试人员联系的纽带。所以一款强大的Restful API文档就变得至关重要了。而目前在后端领域,基本上是Swagger的天下了。

    二、Swagger2综述

    Swagger是一款Restful 接口的文档在线自动生成、功能测试框架。一个规范和完整的框架,用于生成、描述、调用和可视化Restful 风格的Web服务,加上Swagger-UI,可以有很好的呈现。

    Swagger是一组开源项目,其中主要项目如下:

    • Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2.0文档等功能。
    • Swagger-core: 用于Java/Scala的的Swagger实现。与JAX-RS(Jersey、Resteasy、CXF…)、Servlets和Play框架进行集成。
    • Swagger-js: 用于JavaScript的Swagger实现。
    • Swagger-node-express: Swagger模块,用于node.js的Express web应用框架。
    • Swagger-UI:一个无依赖的HTML、JS和CSS集合,可以为Swagger兼容API动态生成优雅文档。
    • Swagger-codegen:一个模板驱动引擎,通过分析用户Swagger资源声明以各种语言生成客户端代码。

    1、Swagger-UI 是什么?

    Swagger-UI 是一款Restful接口的文档在线自动生成+功能测试功能软件。
    Swagger-UI 的官方地址:http://swagger.io/
    Github上的项目地址:https://github.com/swagger-api/swagger-ui
    官方提供的demo地址:http://petstore.swagger.io/
    在这里插入图片描述

    2、为什么API接口文档用Swagger-UI ?

    现在多数的项目开发中,网站和移动端都需要进行数据交互和对接,这少不了使用Restful编写API接口这种场景。 特别是不同开发&测试团队协作时,就更需要以规范和文档作为标准和协作基础。良好的文档可以减少沟通成本,达到事半功倍的效果。
    有时对一些API说明的理解比较模糊,总想着能直接验证一下自己的理解就好了,而不是需要去项目写测试代码来验证自己的想法。即API文档应具备直接执行能力,这种能力类似word,wiki等是无法提供。Swagger-UI 就是这样一种利器,基于Html+Javascript实现,倾向于在线文档和测试,使用和集成十分简单,能容易地生成不同模块下的API列表, 每个API接口描述和参数、请求方法都能定制并直接测试得到直观的响应数据。

    3、Swagger-UI 怎么用?

    目前官方提供的Swagger-UI 的使用方式主要有2种:

    • 与不同的服务端代码集成,在服务端代码中嵌入SwaggerUI文档生成代码,部署时自动生成。
    • 手动编辑对应的Json文档,该Json文档有其特定格式,相对比较复杂,手动编写难度比较大,可通过官方提供的在线编辑来实现。

    三、与SpringBoot集成

    pom依赖包

      <!--引入swagger -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.8.0</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.8.0</version>
            </dependency>
    

    编写配置文件SwaggerConfig

    /**
     * 主要是添加注解@EnableSwagger2和定义Docket的bean类。
     */
    
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        //是否开启swagger,正式环境一般是需要关闭的,可根据Springboot的多环境配置进行设置
        @Value(value = "${swagger.enabled}")
        Boolean swaggerEnabled;
    
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                    // 是否开启
                    .enable(swaggerEnabled).select()
                    // 扫描的路径包
                    .apis(RequestHandlerSelectors.basePackage("com.techstar"))
                    // 指定路径处理PathSelectors.any()代表所有的路径
                    .paths(PathSelectors.any()).build().pathMapping("/");
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("SpringBoot-Swagger2集成和使用示例")
                    .description("7DGroup | zuozewei")
                    // 作者信息
                    .contact(new Contact("zuozewei", "https://blog.csdn.net/zuozewei", "zuozewei@hotmail.com"))
                    .version("1.0.0")
                    .build();
        }
    }
    

    添加文档内容(一般上是在Controller,请求参数上进行注解)
    添加MyGetMethod类,这里演示两个Get请求

    @RestController
    @RequestMapping("/")
    @Api(tags = "API文档",value = "/",description = "这是我全部的Get方法")
    public class MyGetMethod {
    
        @GetMapping(value = "/getCookies")
        @ApiOperation(value = "通过这个方法可以获取到Cookies",httpMethod = "GET")
        public String getCookies(HttpServletResponse response){
            //HttpServerletRequest 装请求信息的类
            //HttpServerletResponse  装响应信息的类
            Cookie cookie = new Cookie("login","true");
            response.addCookie(cookie);
            return "恭喜zuozewei获得cookies信息成功";
        }
    
        /**
         * 要求客户端携带cookies访问
         * 这是一个需要携带cookies信息才能访问的get请求
         */
        @GetMapping(value = "/get/with/cookies")
        @ApiOperation(value = "通过这个方法可以获取到Cookies",httpMethod = "GET")
        public String getWithCookies(HttpServletRequest request){
            Cookie[] cookies = request.getCookies();
            if (Objects.isNull(cookies)){
                return "必须携带cookies信息来";
            }
            for (Cookie cookie:cookies){
                if (cookie.getName().equals("login") && cookie.getValue().equals("true")){
                    return "这是一个需要带着cookies信息才能访问的get请求";
                }
            }
    
            return "必须携带cookies信息来";
        }
    }
    

    配置全局配置文件application.properties

    # 默认的端口号
    server.port=8888
    
    # 开启swagger
    swagger.enabled=true
    

    启动项目
    在这里插入图片描述

    四、Swagger-UI 访问与使用

    API首页路径:http://127.0.0.1:8888/swagger-ui.html
    在这里插入图片描述
    点击需要访问的API列表,查看接口详情,点击try it out按钮测试在这里插入图片描述
    执行测试
    在这里插入图片描述
    服务端返回结果
    在这里插入图片描述

    Swagger使用的注解及其说明:
    @Api:用在类上,说明该类的作用。
    @ApiOperation:注解来给API增加方法说明。
    @ApiImplicitParams : 用在方法上包含一组参数说明。
    @ApiImplicitParam:用来注解来给方法入参增加说明。
    @ApiResponses:用于表示一组响应
    @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息

    • l code:数字,例如400
    • l message:信息,例如"请求参数没填好"
    • l response:抛出异常的类

    @ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
    @ApiModelProperty:描述一个model的属性

    对于其他注解,大家可自动谷歌,毕竟常用的就这几个了。有了swagger之后,原本一些接口请求需要Postman这样的调试工具来进行发起,而现在直接在页面上就可以进行调试了,是不是很爽?
    对于测试人员,有了这份API文档也是一目了然,不需要和后端多少沟通成本,按着API说明进行接口测试脚本开发即可。

    五、小结

    本文主要是对Swagger的简单使用和Springboot集成进行了说明,详细的用法,可自行搜索相关资料下,这里就不阐述了。因为对于百分之八十之上的文档要求基本能满足了。最后,一定要在生产环境关闭Swagger,基于安全因素。

    项目源码地址:

    • https://github.com/zuozewei/blog-example/tree/master/Java-api-test/06-api-management/springboot-swagger-demo
    展开全文
  • JAVA 接口

    2016-04-08 15:14:55
    单继承性使得Java简单,易于管理程序。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。 使用关键字interface来定义一个接口。分为接口的声明和接口体。 (1)接口声明:接口通过使用关键字...

    Java不支持多继承性,即一个类只能有一个父类。单继承性使得Java简单,易于管理程序。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。

    使用关键字interface来定义一个接口。分为接口的声明和接口体。

    (1接口声明:接口通过使用关键字interface来声明,格式:

           interface  接口的名字 

    2接口体接口体中包含常量定义和方法定义两部分。接口体中只进行方法的声明,不许提供方法的实现,所以,方法的定义没有方法体,且用分号“;”结尾 。

     interface Printable{

        final int MAX=100;

        void add();

        float sum(float x ,float y);

     }

     (3接口的使用: 一个类通过使用关键字implements 声明自己实现一个或多个接口。如果实现多个接口,用逗号隔开接口名,如:

        class A implements PrintableAddable

    如果一个类实现某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体。

        要注意的是,接口中的方法被默认是publicabstract的,接口在声明方法时可以省略方法前面的publicabstract关键字,但是,类在实现接口方法时,一定要用public来修饰。

        类实现的接口方法以及接口中的常量可以被类的对象调用。 

        如果父类实现了某个接口,则其子类也就自然实现这个接口。接口也可以被继承,即可以通过关键字extends声明一个接口是另一个接口的子接口。

    一个类可以实现多个接口,接口可以增加很多类都需要实现的功能,不同的类可以使用相同的接口,同一个类也可以实现多个接口。 

       如,轿车、飞机、轮船等,可能也需要具体实现“收取费用”和“调节温度”的功能,而它们的父类可能互不相同。

      接口只关心功能,并不关心功能的具体实现,使用同一接口的类在实现接口中的方法时,可以给出不同的方法体。

      如“客车类”实现一个接口,该接口中有一个“收取费用”的方法,那么这个“客车类”必须具体给出怎样收取费用的操作,即给出方法的方法体,不同车类都可以实现“收取费用”,但“收取费用”的手段可能不相同,这是功能“收取费用”的多态,即不同对象调用同一操作可能具有不同的行为。

        接口的思想在于它可以增加很多类都需要实现的功能,使用相同的接口类不一定有继承关系。

    接口回调

       接口回调是多态的另一种体现。

    1. 接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称作对象功能的接口回调。接口回调可能产生不同的行为。

    interface ShowMessage{

        void showTradeMark();

    }

    class TV implements ShowMessage{

        public void showTradeMark(){

             System.out.println("我是电视机");

        }

    }

    class PC implements ShowMessage{

         public void showTradeMark(){

             System.out.println("我是电脑");

        }

    }

    public class Example5_12{

        public static void main(String args[]){

             ShowMessage sm;                 //声明接口变量sm

             sm=new TV();                    //接口变量sm中存放对象的引用

             sm.showTradeMark();              //接口sm回调showTradeMark()方法

             sm=new PC();                    //接口变量sm中存放对象的引用

             sm.showTradeMark();              //接口回调

        } 

    }


    2接口做参数

    当一个方法的参数是一个接口类型时,如果一个类实现了该接口,那么就可以把该类的实例的引用传值给该参数,参数可以回调类实现的接口方法。

    interface Show{

        void show();

    }

    class A implements Show{

        public void show(){

            System.out.println("I love This Game");

        }

    }

    class B implements Show{

    public void show(){

            System.out.println("我喜欢看NBA");

        }

    }

    class C{

        public void f(Show s){    //接口作为参数

            s.show();

        }

    }

    public class Example5_13{

        public static void main(String args[]){

            C c=new C();

            c.f(new A());

            c.f(new B());         

        } 

    }


    展开全文
  • api 接口管理工具现在,Web 应用的前后端分离事实上已经成为了大家都认可的一种开发方式,前后端分离之后,前端与后端都用接口(api)来沟通,这就需要我们做好 API 接口管理,所以,这次来聊聊 API 接口管理工具。...
  • 在App开发过程中少不了跟服务端打交道,各种HTTP接口调试、返回...因为各个团队的情况不太一样,可能对接口管理有不一样的需求,目前有不少接口管理工具,足以覆盖不同团队的需求,下面来简单介绍一下。1. YApihttp...
  • 大多数人认为接口的意义在于顶替多重继承众所周知Java没有c++那样多重继承的机制但是却能够实作多个接口其实这样做是很牵强的接口和继承是完全不同的东西接口没有能力代替多重继承也没有这个义务接口的作用...
  • 以前对于public、private、protect、default,都只是简单的知道其对应的访问权限范围,现在看了think in java中的描述,讲了这几种访问权限在什么场景下使用,觉得进一步的了解的它存在的意义和合理性。因为在我们的...
  • java 接口

    2012-02-07 18:13:24
    接口就像一个“管理者”,它告诉你去做什么而不是怎么去做;接口中所有的属性都是public static final 的,接口的方法默认是public abstract的; 如果一个类实现了接口而没有实现接口中的方法,则这个类是抽象的;...
  • 首先,接口和抽象类不能被实例化,所以不能直接通过new出对象调用其方法。但是接口可以被实现。一旦某个类要实现一个接口,必须要实现接口内所有方法,否则就必须声明为抽象类。当然实现接口的方法有很多种,都不难...
  • java抽奖接口后台管理源码(包含xml,controller,service.html),与我上传的资源后端接口,前端展示,后台管理一套
  • 一个完整项目:产品:需求文档,数据库设计文档,接口文档,用户使用手册项目: 后台管理系统,后台接口,前端页面测试Java后台接口:强调前端与后台之间的连接接口,通过接口文档来统一规定,不同于接口定义接口...
  • zigbee4java, Java API为ZigBee网络提供简单的Java接口 面向Java的Java API为ZigBee网络提供简单的Java接口。 用于嵌入式或者网关模式的in可以用于Java版本 3 。 在网关模式下运行网关进程,以便同时为ZigBee网络...
  • 本程序使用Java编写了一个薪水管理系统(2.1版本),对前文的薪水管理系统进行了升级,针对校长和员工类分别增加了一个接口,可以用来比较两个员工的工资收入。本程序使用Java™ SE Runtime Environment (build 12.0.2...
  • 如今,在前后端分离开发的这个年代,Api接口文档管理工具越来越显得重要。完整的Api接口文档能大大提升前后端开发协作的效率。目前市场有哪些比较优秀的接口文档管理工具呢?Swagger Api接口文档工具到底如何,我...
  • Java接口测试之日志管理之AOP统一日志 https://blog.csdn.net/zuozewei/article/details/85375106 自定义Api接口访问系统日志记录 https://blog.csdn.net/m0_37125796/article/details/91561223 log4j的MDC配合...
  • Java 枚举实现接口进行统一管理

    千次阅读 2019-06-26 19:39:06
    Java 枚举实现接口进行统一管理
  • Java接口的应用

    2020-02-27 22:57:19
    Java接口: 接口是一种标准。 耦合度:模块与模块之间的关联程度,关联的越密切,耦合越高,关联的越松散,耦合越低。 常见关系: 类与类:单继承,extends父类名称 类与接口:多实现,implements 接口名称1,接口...
  • cpu-manager:Java:使用Comparator接口管理记录
  • 第1章 接口自动化测试整体认知 了解什么是接口和为什么要做接口测试。并且知道接口自动化测试应该学习哪些技术以及接口自动化测试的落地过程。 第2章 接口测试的用例设计 了解在接口... 第4章 企业级代码管理工具git...
  • Java 接口

    2005-01-14 10:32:00
    众所周知Java没有c++那样多重继承的机制,但是却能够实作多个接口。其实这样做是很牵强的,接口和继承是完全不同的东西,接口没有能力代替多重继承,也没有这个义务。接口的作用,一言以蔽之,就是标志类的类别...
  • java开源项目CrapApi接口管理系统

    万次阅读 2016-04-03 19:35:56
    应用接口管理,后台开发语言为java,主要技术:anjularjs、bootstrap、springMVC、hibernate、maven Application Programming Interface 演示地址:http://api.crap.cn 账号:super 123456 (请勿修改密码,谢谢)...
  • 在html页面加入以下代码:在java后端代码的接口中加入response.setHeader("Access-Control-Allow-Origin", "*");/*星号表示所有的域都可以接受,*/response.setHeader("Access-Control-Allow-Methods", "GET,POST");...
  • E:\最全面的Java接口自动化测试实战\第12章 MyBatis+MySQL实现用例管理 E:\最全面的Java接口自动化测试实战\第13章 TestNg+MyBatis实现数据校验 E:\最全面的Java接口自动化测试实战\第14章 持续集成 E:\最全面的Java...
  • 因工作需要,在后台管理页面加入一个上传文件的模块,虽然接口的代码很简单,但实现期间遇到了一些比较有趣的坑,特记录下来。需求实现文件上传,并提供一个可供下载的路径。想法文件上传代码暂且不谈,先说说文件...
  • 原作者:heaven夏链接:... 借助Spring容器实现Spring作为一个容器,管理着一个项目中所有经过配置的Java类(Annotation方式或xml配置文件)。如果某个接口的所有实现类均被Spring...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,512
精华内容 5,404
关键字:

java接口管理

java 订阅