4.3 接口

鼠标、U盘等外部设备通过USB插口来连接计算机,即插即用,非常灵活。如果需要更换与计算机进行连接的外部设备,只需要拔掉当前USB插口上的设备,把新的设备插入即可,这就是面向接口编程的思想。

1.接口定义

接口定义了一种可以被类层次中任何类实现行为的协议,是常量、抽象方法、默认方法和静态方法的集合,接口可以用来实现多重继承。

接口的定义与类的定义类似,包括接口声明和接口体两部分,接口声明使用interface关键字,接口定义的语法格式如下所示:

public interface 接口名 [extends 接口1,接口2...] {
        [public] [static] [final] 数据类型 常量名 = 常量;         //常量的定义
        [public] [abstract] 返回值的数据类型 方法名(参数列表);     //抽象方法
        [public] static 返回值的数据类型 方法名(参数列表){}        //静态方法
        [public] default 返回值的数据类型 方法名(参数列表){}       //默认方法
}

2.接口实现

接口本身不能直接实例化,接口中的抽象方法和默认方法只能通过接口实现类的实例对象进行调用。实现类通过implements关键字实现接口,并且实现类必须重写接口中所有的抽象方法。需要注意的是,一个类可以同时实现多个接口,实现多个接口时,多个接口名需要使用英文逗号“,”分隔。

[public] class 类名 implements 接口1,接口2{
        // 类体定义
}

3.接口案例

  • 案例需求

设计一个名为Swimmable的接口,其中包含void swim()方法;设计另一个名为Flyable的接口,其中包含void fly()的方法。

定义一个Duck类实现上述两个接口。

定义测试类,演示接口类型的使用。

  • Swimmable接口
public interface Swimmable {

    public abstract void swim();

}
  • Flyable接口

public interface Flyable {

    public abstract void fly();

}
  • Duck类
public class Duck implements Swimmable,Flyable{
    @Override
    public void fly() {
        System.out.println("小鸭在飞...");
    }

    @Override
    public void swim() {
        System.out.println("小鸭在游泳...");
    }
}
  • 测试类
public class TestDuck {

    @Test
    public void test(){
        Duck duck = new Duck();
        duck.swim();
        duck.fly();
    }

}

你可能感兴趣的:(Java程序设计,java,接口)