接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法 ——《Java编程思想》
- 接口中的方法
按我们一般使用interface
关键字的方式,interface
用于申明一组方法,这些方法自动是public abstract
的我们可以通过一些反编译工具,查看接口源码时看到:
在这里eclipse已经自动帮我们给出了方法f的修饰符,即它是public abstract
的,但是源码中并没有显式申明,看起来好像是包访问权限和非抽象的,其实并不是。(我觉得这种自动补充修饰符的方式,对新手理解Java是不友好的,为啥不能限定必须写全了呢)
public
:
protected
:
default
(包访问权限):
private
:
好了,既然接口里面的方法都是abstract
的,辣么,它们都需要子类去实现(implements
),即通过定义class的类名后跟implements
关键字。
在类定义中实现这些方法的body。
- 接口中的域
那如果在接口里定义成员变量,会发生什么?
于是我在接口I里定义了FIELD变量,熟悉Java变量命名规范和eclipse代码高亮的童鞋早已看穿一切。对!字段是public static final
的。
因为你放入接口中的任何域都自动是
static final
的,所以接口就成为了一种很便捷的用来创建常量组的工具。在Java SE5之前,这是产生与C或C++中的enum
(枚举类型)具有相同效果的类型的唯一途径。
……
有了Java SE5,你就可以使用更强大而灵活的enum
关键字,因此使用接口来群组常量已经显得没什么意义了。——《Java编程思想》
- 再扯一下
关于对接口中的方法体,续……