理论教育 Java程序设计实用教程:接口及其实现示例

Java程序设计实用教程:接口及其实现示例

时间:2023-11-21 理论教育 版权反馈
【摘要】:[public]接口的访问类型。接口的抽象方法的访问限制符都已指定为public,所以类在实现方法时,必须显式地使用public修饰符,否则将被系统警告为缩小了接口定义的方法的访问控制范围。使用接口完成对生物、动物、人3个接口的定义。定义一个人类实现上述3个接口。在该例子中出现的所有类和接口的UML关系图如图5.4所示。

Java程序设计实用教程:接口及其实现示例

由于Java只支持单一继承,接口是Java实现多重继承功能的一种手段,一种结构。接口只定义了与外界交流时输入、输出的格式。换句话说,通过在接口中定义一些方法(抽象方法),可以用接口大致规划出类的共同行为,而把具体的实现留给具体的类。

1.接口的声明语法

Java语言中声明接口的语法如下所示:其中,interface为接口的关键字,接口名的命名规则遵守标识符命名规则。

接口可以有多个父接口,子接口继承父接口中所有的常量属性和方法。

接口的属性必须是public static final修饰的,所以在声明时可以不写,系统会默认声明这些修饰符,由于属性都是最终属性,所以声明时必须指定初始值。接口的属性声明代码如下:

[public][static][final]类型 属性名=初始值;

接口中的方法必须是public abstract,所以声明时可以不写,系统会自动增加这些修饰。接口的方法没有方法体,以分号结束,是抽象方法。

关于接口,需要注意以下几点:

(1)接口也可以有属性和方法,接口间也可以形成继承关系。但接口与类的区别是接口的属性都是常量,接口的方法都是抽象方法,没有方法体部分。

(2)接口与抽象类有些类似,有抽象的方法。接口与抽象类的区别是接口中不能有非抽象方法(抽象类可以有非抽象方法);一个接口可以有多个父接口(抽象类只能有一个父类);接口中属性的修饰符仅限于public static final;接口不属于继承机构,它与实际继承关系无关,因此无关的类也可以实现同一个接口。

(3)[public]接口的访问类型。public表示任意类均可使用这个接口;默认,表示只有与接口定义在同一个包中的类才可以访问这个接口。

(4)如果在子接口中定义了和父接口同名的属性或方法,则子接口的属性或方法覆盖父接口中的属性或方法。

2.接口的实现

由于接口中的方法都是抽象方法,必须在使用该接口的其他类中重新定义接口的所有方法,这个过程为某个类实现了某个接口。(www.daowen.com)

实现接口应注意以下几点:

(1)在类的声明部分用implements声明该类将要实现哪些接口。

(2)如果实现某接口的类不是abstract的抽象类,则在实现接口的类的定义部分必须为所有抽象方法定义方法体,而且方法头部分应该与接口中的定义完全一致,即有完全相同的返回值和参数列表。

(3)如果实现某接口的类是abstract的抽象类,则它可以不实现该接口所有的方法。但是对于这个抽象类任何一个非抽象的子类而言,它们父类所实现的接口中的所有抽象方法都必须有实在的方法体。这些方法体可以来自抽象的父类,也可以来自子类自身,但是不允许存在未被实现的接口方法。这主要体现了非抽象类中不能存在抽象方法的原则。

(4)一个类在实现某接口的抽象方法时,必须使用完全相同的方法头。如果所实现的方法与抽象方法有相同的方法名和不同的参数列表,则只是在重载一个新的方法,而不是实现已有的抽象方法。

(5)接口的抽象方法的访问限制符都已指定为public,所以类在实现方法时,必须显式地使用public修饰符,否则将被系统警告为缩小了接口定义的方法的访问控制范围。

(6)Java中一个类只能有一个父类,但可以同时实现若干个接口,故可以实现类似于类的多重继承的功能。

(7)接口的访问控制符只有public一个,表明可以被所有的类和接口使用,如果没有此修饰符,则只能被同一个包中的其他类和接口利用。

【例5.4】 使用接口完成对生物(Biology)、动物(Animal)、人(Man)3个接口的定义。其中生物接口定义breathe()方法;动物接口定义sleep()和eat()抽象方法;人接口定义think()和study()抽象方法。定义一个人(Person)类实现上述3个接口。

在该例子中出现的所有类和接口的UML关系图如图5.4所示。

实现代码如下所示:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈