接口声明
和抽象类不同的是,接口是一个规则。抽象类就像一个模板,说明类将如何实现它。
接口能够被来自任何继承树的任何类所设计。
可以把接口看作是100%抽象类,但是接口只能用抽象方法,而抽象类可以有抽象方法和非抽象方法。在接口中定义的方法和变量的声明方法非常严格:
1.所有接口方法隐含都是共有的抽象的
2.不需要在方法中声明public和abstract修饰符,但是该方法仍然默认就是public和abstract
3.接口只能声明常量,并且是public、static、final的,不能声明实例变量
4.类可以implements多个接口
5.接口可以extends多个接口,但绝不能extends类,也不能implements接口。
6.接口内不能设计内部接口和内部类
7.声明必须使用interface
public interface Rollable{}
public abstract interface Rollable{}
这样声明是正确的,abstract是多余,无论是否输入abstract,接口总是抽象的。
8.在多态的情况下,接口引用可以指向对象。
9.implements了接口可以用abstract修饰类,这样的话该类就不用实现方法,直到一个具体的子类。
- 不能对设计的方法声明异常检查
- 接口的方法不能有final、native、strictfp、synchronized
接口可以含有静态方法(不知道哪个版本的jdk修改的,例如下代码编译通过并运行)
声明接口常量
接口内允许放置常量,这样做能够保证设计该接口的任何类都能访问相同的常量,常量名最好用大写的英文,
接口的常量都是public static final修饰的,不管是否显式的用这些修饰符修饰,接口的常量都是如此,所以接口的值是一个只读值不能被更改。