java之接口:interface

来源:互联网 发布:js产生随机数的函数 编辑:程序博客网 时间:2024/06/04 10:46

接口的引入:

比如抽象类中都是抽象方法,

abstract class AbsDemo{    abstract void show1();    abstract void show2();}

当一个抽象类的方法都是抽象类的时候,这时可以将抽象类用另外一种形式定义和表示,就是接口 interface。

定义接口的关键字不是class,而是interface。

对于接口当中常见的成员:而且这些成员都有固定的修饰符,

1、全局常量  public static final

2、抽象方法  public abstract

interface Demo   //编译后还是Demo.class文件{public static final int NUM = 4;int num = 4;  //如果前面没有加public static final修饰,系统会默认加上public abstract void show1();public abstract void show2();void show();  //如果前面没有加public static final修饰,系统会默认加上}

接口的实现:

类与类之间是继承关系,类与接口之间是实现关系。

接口不可以实例化,只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。否则,这个子类就是一个抽象类。

interface Demo{public static final int NUM = 4;public abstract void show1();public abstract void show2();}class DemoImp implements Demo{public void show1(){}public void show2(){}}

接口的多实现:

在java中不直接支持多继承,因为会出现调用的不确定性。所以java将多继承机制进行改良,在java中变成了多实现。

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

interface A{public void show();}interface B{public void show();}class TestImp implements A,B //多实现{public void show() //这个相当于实现了A和B接口的show(){}}

interface A{public void show1();}interface B{public void show();}class TestImp implements A,B //多实现{public void show1() //这个相当于实现了A和B接口的show(){}public void show(){}}
interface A{public void show1();}interface B{public void show();}class TestImp implements A,B //需要全部实现A和B中的函数{public void show1() {}public void show(){}}


一个类在继承另一个类的同时,还可以实现多个接口。

interface A{public void show1();}interface B{public void show();}class Q{public void method(){}}class TestImp extends Q implements A,B //需要全部实现A和B中的函数{public void show1() {}public void show(){}}
接口的出现避免了单继承的局限性。

接口的细节:

类与类之间用继承extends

类与接口之间用实现implements

接口与接口之间可以是继承关系,而且接口可以多继承。原理是接口没有方法体,避免了多继承的不确定性。

interface C{void show();}interface D{void method();}interface InterfaceMutiExtends extends C,D{void function();}class newDemo implements InterfaceMutiExtends{//需要覆盖3个方法public void show(){}public void method(){}public void function(){}}

接口的特点:

接口是对外暴露的规则。

接口是程序的功能拓展

接口的出现降低耦合性。

接口可以用来多实现。

类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。

接口与接口之间可以有继承关系。

比如笔记本的USB口就是接口的设计理念。

接口的应用:

interface USB{public void open();public void close();}//U盘和鼠标这些设备和电脑的耦合性降低了。//U盘class UPan implements USB{public void open(){System.out.println("UPan open");}public void close(){System.out.println("UPan close");}}//鼠标class UMouse implements USB{public void open(){System.out.println("UMouse open");}public void close(){System.out.println("UMouse close");}} class BookPC{public static void main(String[] arg){useUSB(new UPan());useUSB(new UMouse());}//使用规则public static void useUSB(USB u)  //接口类型的引用,用于接收(指向)接口的子类对象{u.open();u.close();}}
输出:


1 0