SCJP认证范围 1.4 声明接口
来源:互联网 发布:seo综合站长工具 编辑:程序博客网 时间:2024/06/01 09:11
目标:
1.1 编写代码,声明类(包括抽象类和个各种形式的嵌套类) 、接口和枚举。编写代码,包含包和导入语句(包括静态导入)的恰当使用。
1.2 编写代码,声明接口。编写代码,实现或扩展一个或多个接口。编写代码,声明抽象类。编写代码,扩这抽象类。
1.4.1 声明接口
创建一个接口时,是在定义一份契约(contract) ,说明类能够做什么,而不是说明该类将怎么样实现它。接口就是一份契约。例如,可以编写接口Bounceable,实际说明“这是一个Bounceable接口,任何实现这个接口的类类型都必须同意为bounce()和setBounceFactor()方法编写代码。”
可以这样说,将接口看成是100%的抽象类。
但是,尽管抽象类能够定义抽象和非抽象方法,接口却只能有抽象啊方法。接口与抽象类的另一个不同之处在于,接口中定义的方法和变量的生命方式的灵活性很小 。如下这些规则是严格的:
1)所有 的接口方法隐含都是公共的和抽象的。换句话说,在方法声明中不必实际的加入public或abstract修饰符,方法总是公共的和抽象的。
2)接口中定义的所有变量必须是公共的、静态的和最终的。换句话说,接口只能声明长粮,而不能声明实例变量。
3)接口方法一定不能是静态的。
4)因为接口方法是抽象的,所有不能将其标识为final、strictfp或native
5)接口而已扩展为一个或多个其他接口。
6)接口不能扩这除了其他接口之外的任何内容。
7)接口不能实现另一个接口或类。
8)必须使用关键字interface声明接口。
9) 接口类型能够被多态地使用
以下是合法的接口声明:
键入abstract修饰符被认为是多余的。无论是否键入abstract,接口都隐含为抽象的。你需要知道以下两种声明都是合法的,并且功能完全相同:
如果要使接口具有公共访问而不是默认访问的能力,则public修饰符是必要的。
前面已经介绍了接口声明,现在将详细介绍 接口内的方法:
在方法上键入public和abstract修饰符是多余的,因为所有接口方法隐含都是公共的和抽象的。按照这一规则,可以看出如下代码完全等价于上面的接口声明:
必须记住,所有的接口方法都是公共的和抽象的,无论接口定义中有怎样的内容。
请注意用public、abstract的任意组合或没有修饰符声明的接口方法。例如,如果线面5个方法声明是在各自的接口内声明的,则它们是合法的,并且完全相同。
void bounce();
public void bounce();
abstract void bounce();
public abstract void bounce();
abstract public void bounce();
下面的接口方法声明将无法通过编译:
final void bounce();
static void bounce();
private void bonce();
protected void bounce();
1.4.2 声明接口变量
要记住针对接常量的一条重要规则:它们必须总是公共、静态的和最终的。也就是public、static和final。
看看下面的代码有什么问题:
你不能更改常量的值!一旦常量已经被赋值,就永远不能再修改。赋值发生在接口本身内(声明常量) ,因此,实现类能够访问并使用它,但只能将其作为一个只读值。因此,“BAR = 27;”这条赋值语句不会通过编译。
- SCJP认证范围 1.4 声明接口
- SCJP认证范围 1.3声明类
- SCJP认证范围 1.5 声明类成员
- SCJP认证 1.5 (3) 声明类成员
- SCJP认证 1.5.4 (2) 变量声明
- SCJP认证范围 1.2 标志符和Java Bean
- SCJP认证
- SCJP认证 1.5(2) 声明类成员
- SCJP认证 1.5.3 (1)构造函数声明
- SCJP认证 1.5.4(1) 变量声明
- SCJP认证 1.5.4(3) 变量声明
- SCJP认证 1.5.4(4) 变量声明
- SCJP认证 1.5.5 声明枚举(1)
- SCJP认证 1.5.5(2) 声明枚举
- SCJP认证 1.7小结(声明访问控制)
- 补记:通过SCJP认证
- SCJP认证复习~1
- SCJP认证复习~2
- 将程序最小化到托盘(实用工具)
- 开源,选择Google Code还是Sourceforge?
- repository的选择
- 其实山寨也不容易
- 拿什么拯救你,我的路由器
- SCJP认证范围 1.4 声明接口
- IPhone游戏开发纵谈
- Android开发常见错误及技巧
- SNIA 共享存储模型
- Java语言中链表和双向链表的实现
- 2003配置 armv5问题
- 十年莽撞IT路(冯大辉发展历程)
- VC读写INI文件(转)
- 新手不要炒股