Java笔记--接口【第六章】

6.1 概述
  # 接口是一个特殊的抽象类,接口中所有方法都没有方法体
  # Java接口文件的文件名必须与接口名相同


6.2 接口定义
  # 定义关键字: interface
  # 语法格式

    [修饰符] interface 接口名 [extends 父接口名列表]{
        [public] [static] [final] 常量;
        [public] [abstract] 方法;
    }

    - 修饰符:指定接口访问权限,可选值 public。 省略则使用默认访问权限
    - 接口名:指定接口的名称, 接口名必须是合法标志符。 一般情况下要求首字母大写
    - 方法:接口中的方法只有定义没有实现 


6.3 接口继承
  # 特点
    - 可以被继承
    - 可以实现多继承,可以有多个直接父接口 【类继承不能有多个父类】
    - 继承父类接口时,获得父类接口定义的所有抽象方法、常量属性等
    - 继承多个父类接口时,各个父类接口之间用英文逗号隔开


6.4 接口实现
  # 实现关键字: implements
  # 语法格式

    [修饰符] class <类名> [extends 父类名] [implements 接口列表]{
        ............
    }

    - 接口实现时,方法的名字、返回值类型、参数个数及类型必须与接口完全一致且必须实现接口中的所有方法
  # 父接口的常量、方法名冲突
    - 常量冲突,需明确指出常量的接口 “接口名.常量”
    - 方法冲突,实现一个方法就行


6.5 接口与抽象类
  # 共同点
    - 不能被实例化,只能被继承
    - 都可以包含抽象方法,一旦被继承,抽象方法必须全部实现
  # 差别
      - 接口->规范 but 抽象类->模板式设计 [中间产品]
      - 抽象类可以有普通方法,接口不可以
      - 抽象类可以定义静态方法,接口不可以
      - 抽象类可以包含构造器 让子类调用并完成初始化操作,接口不可以
      - 抽象类可以包含初始化快, 接口不可以
      - 一个类最多只能有一个直接父类,包括抽象类,一个类可以实现多个接口


6.6 接口UML图
  # 构造:长方形垂直分层三层[从上到下]
        - 第一层:名字层,接口名字必须斜体字形,用<>修饰 [修饰和名字分布在两行]
        - 第二层:常量层,常量列表,格式“常量名字:类型”
        - 第三层:方法层,方法列表,格式“方法名字(参数列表):返回值类型”
  # 使用 [一个类实现一个接口]
    - 虚线连接类和它实现的接口
    - 虚线起始端为类,终止端为接口,终止端使用空心三角形表示虚线的结束


6.7 接口回调
  # 接口变量
    - 接口也是Java中的一种数据类型,使用接口声明的变量作为接口变量
    - 接口变量属于引用类型。
    - 接口变量中可以存放实现该接口的类的实例的引用,即存放对象的引用
  # 接口回调
    - 把实现某一接口的类多创建的对象的引用 赋值给该接口声明的接口变量
      那么该接口变量就可以调用被类实现的接口方法
    - 当接口变量调用被类实现的接口方法时,就是通知相应的对象调用这个方法
  # 代码示例

  public interface People{
      void Say(String s);
  }

  public class Teacher implements People{
    public void Say(String s){
        System.out.println(s);
    }
  }

  public class Student implements People{
      public void Say(String s){
          System.out.println(s);
      }
  }

  public calss app{
      public static void main(String[] args){
          People tea;
          tea = new Teacher();
          tea.Say("老师");

          tea = new Student();
          tea.Say("学生");
      }
  }



6.8 接口多态
  - 指不同的类在实现同一个接口的时候可能具有不用的表现方式


6.9 接口参数
  - 如果一个方法的参数是接口类型的参数,
    就可以将任何实现改接口的类的实例的引用传递给该接口参数
    那么接口参数就可以回调类实现的接口参数


6.10 面向接口编程
  # 使用接口来约束类的行为,并为类和类之间的通信建立实施标准
  # 使用面向接口编程增加了程序的可维护性和可扩展性
    - 可维护性:当子类功能被修改时,只要接口不发生变化,系统其它代码就不需要改动
    - 可扩展性:如果子类增加其它功能,只需要子类实现其它接口即可
  # 使用接口可以实现程序设计的“开-闭原则” [对扩展开放,对修改关闭]

你可能感兴趣的:(Java)