接口的语法
定义
相当于特殊的抽象类,定义方式、组成部分与抽象类类似。】
interface MyInterface{
public static final String FIELD="value";
public abstract void method();
}
- 使用interface关键字定义接口。
- 没有构造方法,不能创建对象
- 只能定义:公开静态常量、公开抽象方法
- 可省略修饰符
声明
前提需要一个实现类,这里省略
MyInterface inter=new impl();
与抽象类的区别
相同:
- ·可编译成字节码文件
- 不能创建对象。 ·
- 可以作为引用类型。 ·
- 具备Object类中所定义的方法。
不同:
- 所有属性都是公开静态常量,隐式使用public static final修饰。 ·
- 所有方法都是公开抽象方法,隐式使用public abstract修饰。
- 没有构造方法、动态代码块、静态代码块。
什么是接口
- 微观概念:接口是一种能力和约定。
- 接口的定义:代表了某种能力。
- 方法的定义:能力的具体要求。
- 经验:Java为单继承,当父类的方法种类无法满足子类需求时,可实现接口扩充子类能力。
- 接口支持多实现,可为类扩充多种能力。 (就是一个类实现多个接口,多个接口用,隔开)
接口的规范
- 任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类。
- 实现接口中的抽象方法时,访问修饰符必须是public。
接口引用
同父类一样,接口也可声明为引用,并指向实现类对象。
注意:
- 仅可调用接口中所声明的方法,不可调用实现类中独有的方法。
- 可强转回实现类本身类型,进行独有方法调用。
- 通过接口可调用Object中的公开方法
接口的多态
常见关系
类与类
- 单继承
- extends 父类名称
类与接口
- 多实现
- implements 接口名称1,接口名称2,接口n
接口与接口
- 多继承
- extends 父接口1,父接口2,父接口n
常量接口、标记接口
- 常量接口,将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码可读性。
- 标记接口中没有包含任意成员,仅仅用作标记。
- Serializable (可序列化)
- Cloneable(可克隆的)