一、接口
Java语言不允许一个子类拥有多个直接父类,即任何子类只能有一个直接父类。但允许一个类实现多个接口,即在定义类的接口名称列表中可以包含1个或多个接口名称,从而实现多重继承的特性。接口的定义格式如下:
【接口修饰词列表】 interface 接口名 【extends 接口名称列表】
{
接口体
}
接口修饰词列表可以包含0个、1个或者多个接口修饰词。如果存在多个接口修饰词,则在相邻两个接口修饰词之间采用空格分隔开。接口修饰词包括:public、abstract和strictfp等。在同一个Java源文件中可以包含多个类或接口,但不能包含两个或者两个以上的具有public修饰词的类或者接口。如果在接口修饰词列表中不含关键字public、protected和private,则在上面定义的接口具有默认的封装访问控制属性,只能在当前的软件包中使用。
接口名可以是任意的合法标识符。
Extends 接口名称列表是可选项,如果包括extends j接口名称列表这一选项,则在接口名称列表中可以包含1个或者多个接口名称,则在相邻两个接口名称之间采用逗号分隔开。
接口体部分可以定义接口的两类成员要素:成员域和成员方法。在接口体内部不含构造方法,因此一般不能直接通过接口生成接口的实例对象。其中,接口的成员域,简称为域,其定义格式如下:
【域修饰词列表】 类型 带初始化的变量名称列表;
接口的所有成员域都具有public、static和final属性。
接口的成员方法,简称为方法。接口的成员方法只能是抽象成员方法,其定义格式如下:
【方法修饰词列表】 返回类型 方法名(方法的参数列表);
接口的所有成员方法都具有public和abstract属性。
二、变量作用域范围
在Java语言中,变量主要包括成员域、成员方法或构造方法的参数变量、在方法体内的局部变量。变量作用域范围指的是变量在Java程序中的有效范围。变量作用域范围可以分为三种:全局作用域范围、类作用域范围和块作用域范围。具体如下:
(1)全局作用域范围
静态成员域具有全局作用域范围。
(2)类作用域范围
不具有静态属性的成员域具有类作用域范围。在该成员域所在类型或其子类型的不具有静态属性的成员方法的方法体中可以直接访问不具有静态属性的成员域,即使成员方法的定义在成员域的定义前面。
(3)块作用域范围
成员方法或构造方法的参数变量以及在方法体内定义的局部变量具有块作用域范围。这里成员方法或构造方法的参数变量以及在方法体内定义的局部变量,统称为局部变量。局部变量的作用域从该变量的声明处,一直到该变量所在的块结束处。
三、方法调用的值传递方式
方法调用的参数传递方式指的是在方法调用时从方法的调用参数代入到方法定义的参数的方式。在Java语言中,方法调用的参数传递方式基本上都采用值传递方式。成员方法的声明格式如下:
【方法修饰词列表】 返回类型 方法名(方法的参数列表)
方法调用的格式有如下3种形式:
(1)成员方法名(成员方法调用参数列表)
(2)表达式.成员方法名(成员方法调用参数列表)
(3)类名.静态成员方法名(成员方法调用参数列表)
在方法调用时,要求调用参数与成员方法的定义参数个数相同,而且类型相匹配。
在进行方法调用时,首先将调用参数表达式的存储单元的内容复制给定义参数变量的存储单元,即将调用参数表达式的值赋值给定义参数变量,从而使得定义参数变量的值与调用参数表达式的值相同,这个过程称为参数传递。
另外,需要特别注意的是:参数的值传递不能改变调用参数变量的值,如果需要改变调用参数变量的值可以采用引用数据类型值的传递。(这类似于C语言中的指针,使用指针传递值才能改变调用参数变量的值)