Java语言规范外文翻译资料

 2023-08-09 16:13:23

英语原文共 796 页,剩余内容已隐藏,支付完成后下载完整资料


第九章

接口

接口声明引入了一个新的引用类型,其成员是类、接口、常量和方法。这种类型没有实例变量,通常声明一个或多个抽象方法;否则,不相关的类可以通过为其抽象方法提供实现来实现接口。接口可能不会直接实例化。

嵌套接口是其声明发生在另一个类或接口。

顶层接口是一个不是嵌套接口的接口。

我们区分了两种接口--普通接口和注释类型。本章讨论了所有接口的通用语义--普通接口(sect;7.6)和嵌套接口(sect;8.5,sect;9.5)和注释类型(sect;9.6)。专用于这些构造的部分讨论了特定于特定类型接口的Details。程序可以使用接口使相关类不必共享抽象超类或向对象添加方法。

接口可以声明为一个或多个其他接口的直接扩展。

接口,这意味着它继承了它扩展的接口的所有成员类型、实例方法和常量,但它可能覆盖或隐藏的任何成员除外。

可以声明一个类来直接实现一个或多个接口,这意味着

类的任何实例都通过接口实现所有抽象方法。类必须实现它的直接超类和直接超级接口所做的所有接口。这种(多个)接口继承允许对象支持(多个)公共行为,而无需共享超类。

9.1接口声明接口

声明类型为接口类型的变量,其值可能为对实现指定接口的类的任何实例的引用。仅仅是类碰巧实现了接口的所有抽象方法是不够的;类或它的一个超类必须实际声明为实现接口,否则类不被认为是实现接口的。

接口声明指定新的命名引用类型。有两种接口声明--普通接口声明和注释类型声明(sect;9.6)。

接口声明:

NormalInterfaceDeclarationAnnotationTypeDeclaration

NormalInterface声明:

{接口Modifier}接口类型标识符[TypeParameters]

[扩展接口]接口

接口声明中的类型标识符指定接口的名称。

如果接口的名称与其封装类或接口的名称相同,则是编译时错误。接口声明的范围和阴影在第6.3节和第6.4节中指定。

9.1.1接口修饰符

接口声明可以包括接口修饰符。

接口修饰符:

(一)注释-公共保护的私人-抽象的静态严格限制

接口声明中注释修饰符的规则在sect;9.7.4和9.7.5中指定。访问修饰符public(sect;6.6)适用于各种接口声明。

受保护和私有的访问修饰符只适用于成员接口--其声明直接被类声明包围(sect;8.5.1)。修饰符静态只适用于成员接口(sect;8.5.1,sect;9.5),而不适用于toplevel接口(sect;7.6)。如果同一个关键字多次作为接口声明的修饰符出现,或者如果接口声明有多个访问修饰符--公共、保护和私有(sect;6.6),则是编译时错误。

如果两个或多个(不同的)接口修饰符出现在接口声明中,则按照与所显示的顺序一致的顺序出现是习惯的,尽管不是必需的。

以上用于接口改性剂的生产。

9.1.1.1抽象接口

每个接口都是隐式抽象的。

此修饰符已过时,不应在新程序中使用。

9.1.1.2严格的接口

Strectfp修饰符的作用是使接口声明中的所有浮点或双表达式显式fp-严格(sect;15.4),这意味着接口中声明的所有方法和接口中声明的所有嵌套类型都是隐式限制tfp。

9.1.2通用接口和类型参数

如果一个接口声明一个或多个类型变量(sect;4.4),则该接口是通用的。这些类型变量称为接口的类型参数。类型

参数部分遵循接口名称,并由尖括号分隔。

为方便起见,在此展示了第8.1.2节和第4.4节的下列成果:

类型参数:

TypeParameterList:

类型参数{,类型参数}

类型参数:

类型标识符

TypeParameterModifier:

注记

TypeBound:

扩展TypeVariable扩展ClassOrInterfaceType{adtionalBound}

添加剂范围:

amp;接口类型

类型参数声明的注释修饰符的规则在sect;9.7.4和sect;9.7.5中都有。

在接口的类型参数部分,如果S是T的界,类型变量T直接依赖于ATYPE变量S,而如果T直接依赖于S,则T依赖于S。

依赖于S或T直接依赖于依赖于S的类型变量U(递归地使用此定义)。如果接口的stype参数部分中的类型变量依赖于它自己,则是编译时错误。接口类型参数的范围和阴影在sect;6.3中指定。引用泛型接口iAnywhere的类型参数(sect;9.3、sect;9.4、sect;9.5)中的泛型接口的类型参数是编译时错误。泛型接口声明定义了一组参数化类型(sect;4.5),可以按类型argument对类型参数节进行参数化。所有这些参数化类型都在运行时共享相同的接口。

9.1.3超级接口和子接口

如果提供了EXTENSION子句,则声明的接口扩展了其他命名接口的每个接口,因此继承了其他每个命名接口的成员类型、instancemMethods和常量。

这些其他命名接口是被命名接口的直接超级接口。

实现声明接口的任何类也被认为实现了该接口扩展的所有接口。

扩展接口:

扩展接口类型列表

为方便起见,在这里展示了第8.1.5节中的下列内容:

接口类型:

接口类型{,接口类型}

接口声明扩展子句中的每个接口类型必须命名

出现可访问的接口类型(sect;6.6)或编译时错误。

如果InterfaceType有类型参数,则必须表示格式良好的参数化

类型(sect;4.5),并且没有一个类型参数可能是通配符类型参数,或者出现编译时错误。

I (n ge; 0),直接

接口类型Ilt;

F1hellip;,Fngt;在扩展中给出的类型

如果出现了EXTENSION子句,则为I的声明中的子句提供一个泛型接口声明I

lt;F1,hellip;,Fngt; (ngt;0),直接超级接口

参数化接口类型I

lt;F1,hellip;,Fngt;,其中T

(1le;ile;n)是一种类型。

超介面关系是直接超介面的传递闭包。

关系。接口K是接口I的超接口,如果下列任一一个是正确的:·K是I.的一个直接超接口。存在一个接口J,使得K是J的一个超接口,而J是一个

i的超级接口,递归地应用此定义。

当K是超接口时,接口I被称为K的子接口。

当每个类都是类对象的扩展时,不存在所有接口都是扩展的单一接口。

如果扩展子句中提到T,则接口i直接依赖于类型T。

作为超级接口或作为完全限定形式的疗养接口名称的限定符。

如果下列任何一项都是正确的,则接口依赖于引用类型T:

·我直接依赖于T·我直接依赖于依赖于T的类C(sect;8.1.5)。·我直接依赖于依赖于T的接口J(使用这个定义)

(递归地)。

如果接口依赖于接口本身,则是编译时错误。如果在运行时检测到循环声明的接口,当加载接口时,则抛出ClassCircularityError(sect;12.2.1)。

TypeBound:

扩展TypeVariable扩展ClassOrInterfaceType{adtionalBound}

添加剂范围:

amp;接口类型

类型参数声明的注释修饰符的规则在sect;9.7.4和sect;9.7.5中都有。

在接口的类型参数部分,如果S是T的界,类型变量T直接依赖于ATYPE变量S,而如果T直接依赖于S,则T依赖于S。

依赖于S或T直接依赖于依赖于S的类型变量U(递归地使用此定义)。如果接口的stype参数部分中的类型变量依赖于它自己,则是编译时错误。接口类型参数的范围和阴影在sect;6.3中指定。引用泛型接口iAnywhere的类型参数(sect;9.3、sect;9.4、sect;9.5)中的泛型接口的类型参数是编译时错误。泛型接口声明定义了一组参数化类型(sect;4.5),可以按类型argument对类型参数节进行参数化。所有这些参数化类型都在运行时共享相同的接口。

9.1.3超级接口和子接口

如果提供了EXTENSION子句,则声明的接口扩展了其他命名接口的每个接口,因此继承了其他每个命名接口的成员类型、instancemMethods和常量。

这些其他命名接口是被命名接口的直接超级接口。

实现声明接口的任何类也被认为实现了该接口扩展的所有接口。

扩展接口:

扩展接口类型列表

为方便起见,在这里展示了第8.1.5节中的下列内容:

接口类型:

接口类型{,接口类型}

接口声明扩展子句中的每个接口类型必须命名

出现可访问的接口类型(sect;6.6)或编译时错误。

如果InterfaceType有类型参数,则必须表示格式良好的参数化

类型(sect;4.5),并且没有一个类型参数可能是通配符类型参数,或者出现编译时错误。

接口类型如果出现了EXTENSION子句,则为I的声明中的子句提供一个泛型接口声明参数化接口类型I

超介面关系是直接超介面的传递闭包。

关系。接口K是接口I的超接口,如果下列任一一个是正确的:·K是I.的一个直接超接口。存在一个接口J,使得K是J的一个超接口,而J是一个

i的超级接口,递归地应用此定义。

当K是超接口时,接口I被称为K的子接口。

当每个类都是类对象的扩展时,不存在所有接口都是扩展的单一接口。

如果扩展子句中提到T,则接口i直接依赖于类型T。

作为超级接口或作为完全限定形式的疗养接口名称的限定符。

如果下列任何一项都是正确的,则接口依赖于引用类型T:

·我直接依赖于T·我直接依赖于依赖于T的类C(sect;8.1.5)。·我直接依赖于依赖于T的接口J(使用这个定义)

(递归地)。

如果接口依赖于接口本身,则是编译时错误。如果在运行时检测到循环声明的接口,当加载接口时,则抛出ClassCircularityError(sect;12.2.1)。

9.1.4接口主体和成员声明

接口的主体可以声明接口的成员,即字段(sect;9.3)、方法(sect;9.4)、类(sect;9.5)和接口(sect;9.5)。

界面正文:

{{接口-“宣言”}

接口-宣言:

ConstantDeclarationInterfaceMethodDeclarationClassDeclarationInterfaceDeclaration

在第6.3节中指定了在I中声明或由Interfacetype继承的成员m的声明范围。

9.2接口成员接口

接口类型的成员是:.在接口主体中声明的成员(sect;9.1.4)。·从任何直接超级接口继承的成员(sect;9.1.3)。·如果接口没有直接的超级接口,则接口隐式声明

具有签名s的公共抽象成员方法m、返回类型r和带有签名的每个公共实例方法m对应的throws子句t,返回类型r,并抛出在对象中声明的子句t(sect;4.3.2),除非接口显式声明具有相同签名、相同返回类型的抽象方法和兼容的throws子句。如果接口在Objects中声明m为最终方法,则为编译时错误。如果接口显式声明一个方法,且该方法与对象的公共方法等效(sect;8.4.2),则为编译时错误,但它具有不同的返回类型,或不兼容的抛出子句,或者是notabstract。

该接口从它扩展的接口继承所有这些接口的成员,但(I)字段、类和它隐藏的接口除外,(Ii)抽象的。

它覆盖的方法和默认方法(sect;9.4.1)、(Iii)私有方法和(Iv)静态方法。接口类型的字段、方法和成员类型可能具有相同的名称,因为它们在不同的上下文中使用,并且由不同的查找过程消除歧义(sect;6.5)。然而,这在风格上是不受欢迎的。

9.3字段(常量)声明

“康斯坦特宣言”:

{ConstantModifier}UnannType VariableDeclaratorList;

ConstantModifier:

(其中一项)注释-公开终局

UnannType见第8.3节。这里显示了sect;4.3和sect;8.3中的下列产品

为方便起见:

变量清单:

变量Declarator{,VariableDeclarator}

变型装配器:

VariableDeclaratorId[=VariableInitiators]

VariableDeclaratorId:

标识符[Dims]

迪姆斯:

{注释}[]{注释}[]}

变量初始化器:

表达式数组初始化器

接口字段声明上的注释修饰符的规则是在sect;9.7.4和sect;9.7.5中指定的。接口正文中的每个字段声明都是隐式的公共、静态和最终的。允许冗余地为这些字段指定任何或所有这些修饰符。如果同一关键字多次作为字段声明的修饰符出现,则为编译时错误。

如果字段声明中出现了两个或多个(不同的)

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[606742],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。