interface 订阅
interface是面向对象编程语言中接口操作的关键字,功能是把所需成员组合起来,用来装封一定功能的集合。它好比一个模板,在其中定义了对象必须实现的成员,通过类或结构来实现它。接口不能直接实例化,即ICount ic=new iCount()是错的。接口不能包含成员的任何代码,只定义成员本身。接口成员的具体代码由实现接口的类提供。接口使用interface关键字进行声明。 展开全文
interface是面向对象编程语言中接口操作的关键字,功能是把所需成员组合起来,用来装封一定功能的集合。它好比一个模板,在其中定义了对象必须实现的成员,通过类或结构来实现它。接口不能直接实例化,即ICount ic=new iCount()是错的。接口不能包含成员的任何代码,只定义成员本身。接口成员的具体代码由实现接口的类提供。接口使用interface关键字进行声明。
信息
面    向
对象编程语言中接口操作
外文名
interface
类    型
关键字
注意点2
接口不能包含成员的任何代码
中文名
接口
功    能
把所需成员组合起来
注意点1
接口不能直接实例化
interface关键字
接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容。声明格式如下:[attributes] [modifiers] interface identifier [: base-list] {interface-body} {;}1、attributes(可选):附加的定义性信息。2、modifiers(可选): 允许使用的修饰符有 new 和四个访问修饰符。分别是:new、public、protected、internal、 private。在一个接口定义中同一修饰符不允许出现多次,new 修饰符只能出现 在嵌套接口中,表示覆盖了继承而来的同名成员。The public, protected, internal, and private 修饰符定义了对接口的访问权限。3、指示器和事件。4、identifier:接口名称。5、base-list(可选):包含一个或多个显式基接口的列表,接口间由逗号分隔。6、interface-body:对接口成员的定义。7、接口可以是命名空间或类的成员,并且可以包含下列成员的签名: 方法、属性、索引器 。8、一个接口可从一个或多个基接口继承。接口这个概念在C#和Java中非常相似。接口的关键词是interface,一个接口可以扩展一个或者多个其他接口。按照惯例,接口的名字以大写字母"I"开头。
收起全文
精华内容
下载资源
问答
  • ABB PC Interface

    2018-02-23 14:05:39
    PC Interface介绍 PC Interface介绍 PC Interface介绍 PC Interface介绍
  • java中接口(interface)详解

    万次阅读 多人点赞 2019-01-24 15:58:04
    接口(interface) 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。 接口(interface)是抽象方法和常量值的定义的集合。 从本质上...

    接口(interface)

    有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。

    接口(interface)是抽象方法和常量值的定义的集合。

    从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

    接口定义举例

    public interface Runner 
       int id = 1
       public void start()
       public void run()
       public void stop()    
    }
    

    案例:

    蝙蝠会飞,又会用牙齿咬

    首先定义一个飞行的接口:

    package cn.com.Classwork190124;
    
    /*
        如果一个类中,既有抽象方法,又有非抽象方法,那么该类只能定义为抽象类,不能定义为接口
        如果一个类中,只有抽象方法,没有非抽象方法,那么该类可以定义为接口
                                一般就定义为接口
        定义一个接口,使用interface关键字  接口,类,枚举,注解等都是java中的类型
        接口中所有的方法,都是抽象方法
            所以也可以说,接口就是一个特殊的抽象类
    
        接口中除了定义方法外,还可以定义成员变量
                    特点;方法和属性默认都是public修饰,也可以使用protected,但不能用private
                          所有的属性都是静态的常量,默认省略了static和final修饰符,属性的值必须实例化(初始化)
    
     */
    
    public interface Flyable {
        public final int wingsNumber = 2;
        public abstract void fly();
    
    }
    
    

    接着定义一个咬人的接口:

    package cn.com.Classwork190124;
    
    public interface Bitable {
        public int teethNumber = 0;
        public abstract void bite();
    }
    
    

    最后定义蝙蝠类去实现这两个接口:

    package cn.com.Classwork190124;
    
    /*
        在JAVA中,一个类无法继承自多个类,但是可以实现多个接口,使用关键字implements
                                            多个接口之间使用“,”隔开  多个接口之间,没有先后顺序
        这个类叫做实现类,这个类必须实现所有接口的所有方法
     */
    
    public class Bat implements Flyable,Bitable {
        @Override
        public void bite() {
            System.out.println("吸血");
        }
    
        @Override
        public void fly() {
            System.out.println("用翅膀飞");
        }
    
        public static void main(String[] args) {
            System.out.println(Flyable.wingsNumber);
        }
    }
    

    接口的特点:

    用 interface 来定义。

    接口中的所有成员变量都默认是由public static final修饰的。

    接口中的所有方法都默认是由public abstract修饰的。

    接口没有构造方法。构造方法用于创建对象

    实现接口的类中必须提供接口中所有方法的具体实现内容。

    多个无关的类可以实现同一个接口

    一个类可以实现多个无关的接口

    与继承关系类似,接口与实现类之间存在多态性

    接口也可以继承另一个接口,使用extends关键字。

    实现接口的类中必须提供接口中所有方法的具体实现内容。

    多个无关的类可以实现同一个接口

    一个类可以实现多个无关的接口

    与继承关系类似,接口与实现类之间存在多态性

    定义Java类的语法格式:

    < modifier> class < name> [extends < superclass>]

    [implements < interface> [,< interface>]* ] {

    < declarations>*

    }
    此外,接口还常常被用来当做定义常量的集合:

    package cn.com.Classwork190124;
    
    /*
        接口也经常用来被定义常量的集合  默认省略public static final
        定义更简单,使用更方便
     */
    
    public interface Power {
        int vol = 220;
        double hz = 50.0;
    }
    
    

    案例:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如果实现接口的类中没有实现接口中的全部方法,必须将此类定义为抽象类。

    接口也可以继承另一个接口,使用extends关键字

    interface MyInterface
    
    {
    
    String s=“MyInterface”;
    
    public void absM1();
    
    }
    
    interface SubInterface extends MyInterface
    
    {
    
    public void absM2();
    
    }
    
    public class SubAdapter implements SubInterface
    
    {
    
    public void absM1(){System.out.println(“absM1”);}
    
    public void absM2(){System.out.println(“absM2”);}
    
    }
    

    JDK8新增接口中抽象方法的默认实现 使用default关键字

    package cn.com.Classwork190124;
    
    public interface Bitable {
        public int teethNumber = 0;
        //public abstract void bite();
        /*
        java新增接口中抽象方法的默认实现   使用default关键字
        加上default关键字后需要实现方法体
        子类中成为覆盖该方法
         */
        default void bite() {
            System.out.println("用牙齿咬");
        }
    }
    
    

    注意:如果实验发现明明用的是jdk8却报错为:Extension methods are not supported at language level '6’ 请进入idea file->project structure 在project选项卡下将图中被圈的部分改为8即可(language level不能比项目的jdk版本高)。
    在这里插入图片描述
    还可以附带static的默认实现方法

    package cn.com.Classwork190124;
    
    /*
        接口也经常用来被定义常量的集合  默认省略public static final
        定义更简单,使用更方便
     */
    
    public interface Power {
        int vol = 220;
        double hz = 50.0;
        /*
        jdk8新增功能
         */
        public static void lightOn(){
            System.out.println("默认的点灯方法");
        }
    
        public static void main(String[] args) {
            Power.lightOn();
        }
    }
    
    

    练习

    定义一个接口用来实现两个对象的比较。

    package cn.com.Classwork190124;
    
    public interface CompareObject<object> {
        public int compareto(object o);
        //若返回值是 0 , 代表相等; 若为正数,代表当前对象大;负数代表当前对象小
    }
    
    

    定义一个Circle类。

    package cn.com.Classwork190124;
    
    public class Circle {
        private double radius;
        private final double PI=3.14;
    
        public double findArea(){
            return PI*radius*radius;
        }
    
        public double getRadius() {
            return radius;
        }
    
        public void setRadius(double radius) {
            this.radius = radius;
        }
    }
    
    

    定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。

    package cn.com.Classwork190124;
    
    public class ComparableCircle extends Circle implements CompareObject<Circle> {
        @Override
        public int compareto(Circle o) {
            if(this.getRadius()==o.getRadius()){
                return 0;
            }else if(this.getRadius()<=o.getRadius()){
                return -1;
            }else {
                return 1;
            }
        }
    }
    
    

    定义一个测试类TestInterface,创建两个ComaparableCircle对象,调用compareTo方法比较两个类的半径大小。

    package cn.com.Classwork190124;
    
    import java.util.Scanner;
    
    public class TestInterface {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            ComparableCircle c1 = new ComparableCircle();
            ComparableCircle c2 = new ComparableCircle();
            c1.setRadius(sc.nextDouble());
            c2.setRadius(sc.nextDouble());
            System.out.println(c1.compareto(c2));
        }
    }
    

    思考:参照上述做法定义矩形类Rectangle和ComparableRectangle类,在ComparableRectangle类中给出compareTo方法的实现,比较两个矩形的面积大小。
    emmmmm换汤不换药我这里就不赘述了(绝对不是因为太懒!)。

    展开全文
  • golang interface

    千次阅读 2020-09-04 23:28:28
    interface 是范型编程

    interface 是范型编程

    展开全文
  • adb interface usb driver(adb驱动 32bit&64bit) 绿色版

    万次下载 热门讨论 2014-12-25 14:37:16
    适用于插上usb线,手机adb连接不上,找不到adb interface驱动的情况.
  • json-to-ts-interface 根据json字符串自动生成TypeScript interface定义 使用方式: const interfaceDefinition = require('json-to-ts-interface'); const res = interfaceDefinition(json对象||json字符串, {}) ...
  • interface vlan-interface

    千次阅读 2012-02-03 12:51:12
    interface vlan-interface 命令用来进入指定的VLAN 接口视图。如果该VLAN 接口不存在,则先创 建该接口,再进入该VLAN 接口视图。undo interface vlan-interface 命令用来删除指定的VLAN 接口。 需要注意的是:在...
      
    

    【描述】

    interface vlan-interface 命令用来进入指定的VLAN 接口视图。如果该VLAN 接口不存在,则先创

    建该接口,再进入该VLAN 接口视图。undo interface vlan-interface 命令用来删除指定的VLAN

    接口。

    需要注意的是:在创建 VLAN 接口之前,对应的VLAN 必须已经创建。否则,将不能创建指定的

    VLAN 接口。

    用户可以在 VLAN 接口视图下使用ip address 命令配置IP 地址,使得设备具有三层路由功能。

    相关配置可参考命令 display interface vlan-interface

    【举例】

    # 创建VLAN 接口2。

    <Sysname> system-view

    [Sysname] vlan 2

    [Sysname-vlan2] quit

    [Sysname] interface vlan-interface 2

    [Sysname-Vlan-interface2]

    展开全文
  • adb interface驱动程序

    2019-11-30 13:15:29
    adb interface驱动程序, 平板通过usb数据线与电脑连接时失败,用这个可以。本人亲测可以使用。
  • abstract class和interface的区别

    万次阅读 2017-05-23 14:37:47
    在Java语言中,abstract class和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    Java语言中,abstract class和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。

     

     

    Abstract class

    Interface

    实例化

    不能

    不能

    一种继承关系,一个类只能使用一次继承关系。可以通过继承多个接口实现多重继承

    一个类可以实现多个interface

    数据成员

    可有自己的

    静态的不能被修改即必须是static final,一般不在此定义

    方法

    可以私有的,非abstract方法,必须实现

    不可有私有的,默认是public,abstract 类型

    变量

    可有私有的,默认是friendly 型,其值可以在子类中重新定义,也可以重新赋值

    不可有私有的,默认是public static final 型,且必须给其初值,实现类中不能重新定义,不能改变其值。

    设计理念

    表示的是“is-a”关系

    表示的是“like-a”关系

    实现

    需要继承,要用extends

    要用implements

    abstract class和interface在Java语言中都是用来进行抽象类(本文中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢?

    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

    接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现 这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。 然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到 接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

    接口可以继承接口。抽象类可以实现(implements)接口,抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数。接口更关注“能实现什么功能”,而不管“怎么实现的”。

    1.相同点
      A. 两者都是抽象类,都不能实例化。
      B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。

    2. 不同点
      A. interface需要实现,要用implements,而abstract class需要继承,要用extends。
      B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。
      C. interface强调特定功能的实现,而abstract class强调所属关系。
      D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的 (declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。
      这个选择有两点含义:
        一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。那些没有abstract的方法,在Abstrct class中必须定义方法体。
        二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。既是抽象类,当然也不能实例化。
      E. abstract class是interface与Class的中介。
      interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也 不能声明实例变量。然而,interface却可以声明常量变量,并且在JDK中不难找出这种例子。但将常量变量放在interface中违背了其作为接 口的作用而存在的宗旨,也混淆了interface与类的不同价值。如果的确需要,可以将其放在相应的abstract class或Class中。
      abstract class在interface及Class中起到了承上启下的作用。一方面,abstract class是抽象的,可以声明抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆盖。另外,它还可以定义自己 的实例变量,以供子类通过继承来使用。

    3. interface的应用场合
      A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。
      B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。
      C. 需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。
      D. 需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。

    4. abstract class的应用场合
      一句话,在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。最常见的有:
      A. 定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。
      B. 某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract的中介作用可以很好地满足这一点。
      C. 规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能。

    展开全文
  • Interface Standard Interface Standard Interface Standard Interface Standard Interface Standard Interface Standard Interface Standard Interface Standard
  • FunctionalInterface

    千次阅读 2019-01-24 21:49:09
    一、什么是函数式接口 一个只能有一个抽象方法...@FunctionalInterface interface GreetingService{  void sayMessage(String message); } 这样的接口就可以使用Lambda表达式来表示该接口的一个实现 Greetin...
  • interface{} 与 []interface{}

    万次阅读 2017-08-18 15:45:11
    interface{} 与 []interface{} 区别
  • 这里讲的两个宏定义是IPC中鼎鼎大名...DECLARE_META_INTERFACE(INTERFACE) IMPLEMENT_META_INTERFACE(INTERFACE, NAME) 定义 frameworks\base\include\utils\IInterface.h #define DECLARE_META_INTERFACE
  • 前序 一直以来,我们学习java就被...有个概念我们一直没有弄懂的是:类(class)可以实现接口(interface),但是接口(interface)跟接口(interface)之间呢? 类可以继承类和实现接口,如下: public class A...
  • 各模块interface总结,包含:Order Import Interface (Sales Order Conversion) Interface tables,Inventory等...
  • java 中@interfaceinterface 的区别

    千次阅读 2018-08-02 14:16:37
    ②、@interface : 是用来修饰 Annotation 的,请注意,它不是 interface。这个关键字声明隐含了一个信息:它是继承了 java.lang.annotation.Annotation 接口,而不是声明了一个 interface。   2、什么是java ...
  • Golang interface 接口详解

    千次阅读 多人点赞 2021-04-14 22:03:44
    之前写过,golang 是通过 结构体(struct)-方法(method)-接口(interface) 的组合使用来实现面向对象的思想。在之前的文章 Golang 复合类型 和 Golang method 方法详解 已经详细介绍过 struct 和 method,本文将介绍 ...
  • <p>With this snippet, why does it allow interface{} to pass into the function but not []interface. And what's the difference? I know what the error says (have commented it into the function), but I'm ...
  • interface vlan

    千次阅读 2011-05-12 08:19:00
    interface vlan
  • Java中interface和@interface的区别

    千次阅读 2017-09-16 22:38:56
    interface 关键字用来声明一个 Java 接口 @interface 是用来修饰 Annotation (注解)的,它不是 interface。这个关键字声明隐含了一个信息:它是继承了java.lang.annotation.Annotation 接口,而不是声明了一个 ...
  • <p>I want to parse a JSON file to a <code>map[string]...<p>I don't understand much about difference between <code>map[string]interface{}</code> and <code>interface{}</code> in above case. </div>
  • @FunctionInterface

    千次阅读 2018-06-08 10:42:56
    1.用在什么地方,有什么要求-用在接口上-接口内除object的public方法外,只有一个抽象方法@FunctionalInterface public interface Java8Interface { static void staticMethod(){//静态方法 System.out.println(&...
  • 没有ADB Interface,只有感叹号HDB Interface,如何安装Android Composite ADB Interface 安装ADB Interface #一 小编只是个大三学生,学校安排了一门安卓开发的课程。 小编的电脑是联想的天逸100,手机是华为...
  • Go之interface

    千次阅读 2018-03-09 17:33:32
    Go之interface 浅显地了解了一下 Go,发现 Go 语法的设计非常简洁,易于理解。正应了 Go 语言之父 Rob Pike 说的那句“Less is more”—— 大道至简。 下面就具体的语法特性说说我自己的体会。 interface ...
  • frameworks/native/include/binder #define DECLARE_META_INTERFACE(INTERFACE) \ static const android::String16 descriptor; \ static andro
  • java.lang.IllegalArgumentException: @Service interfaceClass() or interfaceName() or interface class must be present! at org.springframework.util.Assert.notNull(Assert.java:198) 原因: 加了 @S...
  • interface关键字

    千次阅读 2017-12-26 18:03:48
    interface关键字 1. 当一个类所有的方法都是抽象方法,那么我们可以将这个抽象类用另外一种形式定义。 ----接口 2. 接口中只能定义常量和抽象方法。 3. 接口的修饰符: public 和 默认不写 4. 接口中的成员都有...
  • delphi interface 总结

    千次阅读 2017-02-24 16:07:19
    1、 interface 是申明了一些函数,自己本身没有定义部分,需要由继承它的类来实现函数。 2、interface 可以被不同的类继承,并且函数的实现方法各不相同。 3、继承interface 的类,必须包含全部interface的函数,...
  • No interface expected here

    千次阅读 2019-04-17 14:14:37
    今天写代码突然遇到一个No interface expected here 错误,idea没有编译过去,No interface expected here的意思是这里没有接口。 No interface expected here 解决方法 把extend 修改为 implements ...
  • @interface使用详解

    万次阅读 2018-06-06 19:34:10
    首先,@interface不是接口是注解类,在jdk1.5之后加入的功能,使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节,我们通过反编译可以看到,源...
  • java interface 介绍

    千次阅读 2013-12-21 16:10:54
    interface类似于class,只不过interface里的所有方法都是abstract抽象的,当一个非抽象的class实现(implements)一个接口interface时,必须实现接口中所有方法(因为都是abstract抽象的),否则该class必须声明为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,008,171
精华内容 803,268
关键字:

interface