java接口#
- 抽象类型 ,通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
- 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
- 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
- 方法都是公有的;隐式抽象,不必写abstract。
- 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
其实接口就是一个协议,一个规范。用于解耦。
一般格式:
[可见度] interface 接口名称 [extends 其他的类名] {
// 声明变量
// 抽象方法
}
例子:
public interface IUserService {
public User getUser();
int FLAG = 1;
}
接口与类的区别:
- 接口不能用于实例化对象。
- 接口没有构造方法。
- 接口中所有的方法必须是抽象方法。
- 接口不能包含成员变量,除了 static 和 final 变量。
- 接口不是被类继承了,而是要被类实现。
- 接口支持多重继承。
public interface Hockey extends Sports, Event
重写接口中声明的方法时,需要注意以下规则:
- 类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。
- 类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。
- 如果实现接口的类是抽象类,那么就没必要实现该接口的方法。
标记接口
没有任何方法的接口被称为标记接口
作用:
(1)建立一个公共的父接口
可以使用一个标记接口来建立一组接口的父接口
(2)向一个类添加数据类型
实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。
@interface
Java用 @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类。
参考:
1.https://www.zhihu.com/question/20111251 有个猫狗粮,店小二,老板的故事很好