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語言中的指針,使用指針傳遞值才能改變調用參數變量的值)