面向对象之接口

一、初步认识接口

听起来接口好像比较抽象难以理解,为什么接口会和抽象类有关系呢?那么我们来看看生活中的接口。
就用USB接口来说,USB接口相关工作是按照如下步骤进行的:

  1. 约定USB接口标准
  2. 制作符合ISB接口约定的各种具体设备
  3. 把USB设备插到USB接口上进行工作

而java中的接口和生活中的接口类似,它提供一种约定,使得实现接口的类(结构)在形式上保持一致。
就像USB接口可以让USB风扇插入,可以让USB鼠标插入,可以让U盘让鼠标插入,所服务的对象他们与USB接口接入的线头都是一样的,这就是结构、类相似,都是相似的类。

定义和实现一个简单的接口
注意:接口是一个不能被实例化的类型
语法如下:
public interface 接口名{

//接口成员

}

  1. 和抽象类不同,定义接口使用interface修饰符。访问修饰符只能是public且可选
  2. 接口成员可以是全局常量和公共的抽象方法
  3. 与抽象类一样,实现接口也必须通过子类,子类通过implements关键字实现接口
  4. 实现接口使用implements关键字
  5. 实现接口的类必须实现接口中定义的所有抽象方法。接口的实现类允许包含普通方法

二、示例演示

1.定义和实现USB接口,进行数据传输

接口代码

package jiekou;

public interface Usb {
    //数据传输抽象方法
    void service();

    }

实现类

package jiekou;

public class UDisk implements Usb {
    @Override
    public void service() {
        System.out.println("连接usb接口,传输数据");
    }
}

2.定义Usb风扇类,实现usb接口,获得电流风扇转动

风扇实现类代码

package jiekou;

public class FengShan implements Usb {
    @Override
    public void service() {
        System.out.println("连接Usb,获得电流,风扇转动");
    }
}

3.测试类调用方法实现功能

package jiekou;

public class Test {
    public static void main(String[] args) {
        //u盘传输数据
        Usb uDisk = new UDisk();
        uDisk.service();
        //usb风扇转动
        Usb fengShan =new FengShan();
        fengShan.service();
     }
}

三、更复杂的接口

  1. 接口的本身也可以继承接口
  2. 接口继承的语法格式如下
    [修饰符]interface接口名extends 父接口1,父接口2,父接口3,…{

常量定义
方法定义
}
一个普通类只能继承一个父类,但能同时实现多个接口,也可以同时继承抽象类和实现接口。
实现多个接口的语法格式如下:
class类名extends 父类名 implements 接口1,接口2,…{
类的成员

}

注意:

  1. 接口和类、抽象类是一个层次的概念,命名规则相同
  2. 修饰符如果是public,则接口在整个项目中可见,如果省略修饰符,该接口只能在当前包中可见。
  3. 接口中可以定义常量,但不能定义变量,接口中的属性都默认用public static
    final 修饰即接口中的属性都是全局静态常量。接口中的常量必须在定义时指定初始值
  4. 接口中的所有方法都是抽象方法,接口中的方法都默认为public
  5. 和抽象类一样,接口同样不能被实例化,接口中不能有构造方法
  6. 接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类
  7. 类只能继承一个父类,但可以通过implements实现多个接口,一个类必须实现接口的全部方法,否则必须定义为抽象类。若一个类在继承父类的同时又实现了多个接口,extends必须在implements之前

这么看来接口的优势在哪里呢?
接口表示一种约定,也表示一种能力,体现了约定和实现相分离的原则。通过面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性和可维护性。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值