Java中的接口

Posted 真正的小明被占用了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的接口相关的知识,希望对你有一定的参考价值。

 一.什么是接口?

接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

 二.创建一个接口

创建接口之前我们需要知道接口的一些必要的规则:

1.Java中的接口只支持是public或者是包访问权限,不能是private或者是protected权限,但是包访问权限的接口在继承时将会出现只有在本包下的接口才可以继承,这就容易导致不知名的错误,所以推荐将所有的接口都设置为public权限。

2.接口中的所有方法都是默认public的抽象方法没有方法体,所以当我们在接口中创建方法是,我们通常不去显式确认方法是public的。

3.Java中可以设定字段。但是字段都是默认为static和final的也就是说都是常量。

4.JavaSE8中增加了一个新特性,在接口中可以放置静态的非抽象方法。

从第四点可以看出我们能在接口中创建一个main方法,并且使其运行。

 下面是一个我们自己创建的接口:

 

package com.cjm.myinterface;

public interface MyInterfaceText {
    int num = 0;// 常量
    void f1();//抽象方法
    static void f2() {
        System.out.println("JavaSE8的新特性可以在接口中写非抽象的静态方法!");
    }
   
}

在接口中创建一个main方法并且使其运行:

public interface MyInterfaceText1 {
    public static void main(String[] args) {
        System.out.println("asdas");
    }
}

结果如下:

 

三.接口继承接口

假设现在拥有两个接口,一个接口想实现另外一个接口的方法,那么用什么方法呢?

接口继承接口,与类实现继承相同,接口实现接口也是通过extends关键字。

代码如下:

public interface MyInterfaceText2 extends MyInterfaceText, MyInterfaceText1 {
    // 实现了一个接口继承了多个接口
}

 

多个接口继承使用逗号隔开。

那么子接口将拥有父接口的所有抽象方法。

 

四.通过接口实现Java的多继承

c++中允许一个类拥有多个父类(基类),但是Java只允许有一个父类但是可以通过多接口来实现多继承。(逻辑上来讲,Java的确优于c++,人只有一个父亲,那么类也应该这样才能够符合这样的规律,毕竟计算机语言也只不过是现实生活的一个映射)。

同样这样做也带来了极大的好处,它使得子类所需要开辟的资源大大减小了。多个父类,会将所有的父类的资源都加载一遍,其中可能有一些是子类不需要的。

实现接口的类,也必须将接口中的抽象方法实现,同时如果要继承类还要实现接口,必须将继承类放在前面,实现接口放在后面。

public class ClassInterface implements MyInterfaceText {

    @Override
    public void f1() {
        // TODO Auto-generated method stub
        System.out.println("实现接口中的方法!");
    }

    public static void main(String[] args) {
        MyInterfaceText yf = new ClassInterface();
    }
}

 

 

 当我们将一个类实现一个接口时,那我们就可以将子类的实例对象向上转型为接口类型。多态的灵活性正是设计接口的原因。

 

五.嵌套定义接口

接口可以嵌套定义在接口或者类中。

在类中去嵌套定义一个接口允许接口是private的。

class ClassHasInterface {
    private interface A {// 使用嵌套定义,接口可以是私有的
        void f();
    }

    
}

 

以上是关于Java中的接口的主要内容,如果未能解决你的问题,请参考以下文章

LockSupport.java 中的 FIFO 互斥代码片段

(转) Java中的负数及基本类型的转型详解

Java Lambda

从父片段到选项卡片段的接口侦听器不起作用

java中封装,继承,多态,接口学习总结

如何使用接口在片段和活动之间进行通信?