And*_*nov 60
接口中的所有字段都是public static final,即它们是常量.
通常建议避免使用此类接口,但有时您可以找到没有方法的接口,并且仅用于包含常量值列表.
ffr*_*end 20
首先,在OOP范例和Java中的OOP实现之间存在差异,因此相同的单词可能意味着有点不同.
在OOP中,范例界面是您可以对对象(或者对象可以为您做什么)所做的事情.任何对象都可以有多个接口,从而扮演不同的角色.例如,某人可以作为程序员工作并且能够创建程序,但同时他可能是丈夫和父亲,因此能够为他的家庭支付账单并照顾孩子.这里"程序员","丈夫"和"父亲"是接口,而人是实现它们的对象.注意,接口并不意味着存在用于实现对象的任何特定功能(字段),只是该对象应该能够执行的操作.
Java或多或少遵循这个想法,但任何范例实现都有自己的特性.Java允许描述方法,即实现对象应该能够执行的操作,而不是任何实现细节,因此,没有关于对象字段或私有方法.
但是常数(public final static字段)呢?它们是实现或接口的一部分.它可能都是.例如,接口"programmer"可以将常量WORK_HOURS设置为"8".因此,Java允许您在接口中描述常量.
请注意,Java只能帮助您进行良好的OOP设计,但并不强烈要求它.特别是,并非对象的所有公共方法都应该存在于接口中.例如,getter和setter方法通常是公共的,但实际上它们是实现的一部分,而不是接口,因此不值得将它们引入接口.
(请注意,我在这里描述的大多数内容都与Java中的主流OOP有关,但也有其他类型的OOP,例如基于原型的OOP,特别是在JavaScript中实现的).
如果该接口引用常量怎么办?在接口中声明它们不是很自然吗?
interface IdFinder {
Serializable UNSAVED = new Serializable() {};
/** @returns the given entity's persistent identity,
or {@link UNSAVED} if it hasn't been saved yet,
or null if o is a value object that hasn't a
persistent identity of its own.
*/
Serializable getId(Object o);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59943 次 |
| 最近记录: |