CoreJava 接口

接口

一、概念

接口是一组规范,使用者和实现者共同遵守的规范

二、语法

  1. 接口的声明:访问修饰符(public/default) interface 接口名{}

    public interface Light{	
    }
    
  2. 接口中的属性:接口中的属性都是公开静态最终的常量,即public static final

  3. 接口中的方法:接口中的方法都是公开抽象的方法,即public abstract

  4. 接口中没有构造方法

  5. 接口中的修饰符可以缺省,但是子类覆盖方法的时候,必须声明为public

  6. 使用接口的关键字是 实现(implements)

    interface Light{
    	void shine();
    }
    class GreenLight implements Light{
    	@Override
    	public void shine() {
    		
    	}
    }
    

三、特点

  1. 接口中属性和方法的访问修饰符都是默认的,不可更改的
  2. 接口中没有构造方法
  3. 接口不能创建对象,但是可以声明引用(多态)
  4. 接口编译之后会生成.class文件,但接口不是类

四、使用

  1. 接口与接口之间的使用:

    1. 接口与接口之间使用继承关系,即使用extends关键字

    2. 接口之间可以多继承

      interface IA{
      	void m1();
      }
      interface IB{
      	void m2();
      }
      interface IC extends IA,IB{	
      }
      
  2. 接口与类之间的使用:

    1. 一个类可以实现多个接口

    2. 需要将多个接口中所有的方法都进行实现,缺一不可

      interface IA{
      	void m1();
      }
      interface IB{
      	void m2();
      }
      class CA implements IA,IB{
      	@Override
      	public void m1() {
      	}
      	@Override
      	public void m2() {
      	}
      }
      
      
  3. 继承和实现:
    一个类可以继承一个父类的同时实现多个接口

    interface IA{
    	void m1();
    }
    interface IB{
    	void m2();
    }
    class Super{}
    class Sub extends Super implements IA,IB{
    	@Override
    	public void m1() {
    	}
    	@Override
    	public void m2() {
    	}
    }
    

五、强制类型转换

  1. 强制类型转换中,如果一方为接口类型引用,那么编译一定通过
  2. 运行是否通过:
    1. 转换双方的类型匹配,运行通过
    2. 转换双方类型不匹配,类型转换异常(java.lang.ClassCastException)

六、接口的作用

  1. 扩充子类功能:将主要的功能定义在父类中,将次要的功能定义在接口中
  2. 解耦合:
    1. 通过接口将使用者和实现者分离
    2. 通过多态将模块间的关系弱化

七、接口的回调

  1. 概念:作为接口的实现者,实现的接口之后无法直观的看到接口何时何地被调用
  2. 意义:体现了协同开发的工作模式,作为接口的实现者只需关注实现部分的代码,不需要关心是否被使用,体现了各司其职的工作方式
抽象类 接口
关键字 class interface
成员变量 没有要求 只能是public static final
成员方法 没有要求 只能是public abstract
构造方法 没有
与类之间的关系 单继承 多实现
与接口之间的关系 多实现 多继承
JDK1.8 静态方法,默认方法
JDK1.9 私有方法
posted on 2020-11-30 01:18  blueskylabor  阅读(75)  评论(0)    收藏  举报