什么是接口?

  1. 接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。
  2. 接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。
  3. 接口是在一定粒度视图上同类事物的抽象表示。因为“同类事物”这个概念是相对的,它因为粒度视图不同而不同。

为什么要使用接口?

  • 系统灵活性增强

    当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改。甚至可以在不改动上层代码时将下层整个替换掉,就像我们将一个WD的60G硬盘换成一个希捷的160G的硬盘,计算机其他地方不用做任何改动,而是把原硬盘拔下来、新硬盘插上就行了,因为计算机其他部分不依赖具体硬盘,而只依赖一个IDE接口,只要硬盘实现了这个接口,就可以替换上去。

  • 不同部件或层次的开发人员可以并行开工

    就像造硬盘的不用等造CPU的,也不用等造显示器的,只要接口一致,设计合理,完全可以并行进行开发,从而提高效率。

接口的作用:

  1. 约束。
  2. 定义一些方法,让不同的人实现,就比如做一个web网页一个人负责js,一个人负责css等等,但最终每个人完成项目后最终还是围绕完成web这个任务,只不过是分配给不同人web的一部分项目。
  3. public abstract
  4. public static final 常量属性
  5. 接口不能被实例化接口没有方法。
  6. implements可以实现多个接口。
  7. 必须要重写接口的方法。

接口的使用方法:

//接口
public class oop09 {
    public static void main(String[] args) {
        Day daily = new Day();
        daily.Year();
        daily.Month();
        daily.Sun();
        daily.Hour();
        daily.Minute();
        daily.Sec();
    }
}
public interface SetData {
    //接口中的所有定义的方法其实都是抽象的
    void Year();   //省略了开头 pulic abstract
    void Month();
    void Sun();
}
public interface SetTime {
    void Minute();
    void Hour();
    void Sec();
}
//用来组合接口的任务
public class Day implements SetTime,SetData {
    public Day(){
        System.out.println("无参构造");
    }
    public Day(int d){
        System.out.println("有参构造");
    }
    @Override
    public void Year() {
        System.out.println("哪年");
    }

    @Override
    public void Month() {
        System.out.println("哪月");
    }

    @Override
    public void Sun() {
        System.out.println("哪日");
    }

    @Override
    public void Minute() {
        System.out.println("几分");
    }

    @Override
    public void Hour() {
        System.out.println("几时");
    }

    @Override
    public void Sec() {
        System.out.println("几秒");
    }
}

Q.E.D.