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;”这条赋值语句不会通过编译。

 

 

 

 

 

原创粉丝点击