一、介面 Java語言不允許一個子類擁有多個直接父類,即任何子類只能有一個直接父類。但允許一個類實現多個介面,即在定義類的介面名稱列表中可以包含1個或多個介面名稱,從而實現多重繼承的特性。介面的定義格式如下: 【介面修飾詞列表】 interface 介面名 【extends 介面名稱列表】 { 介面 ...
一、介面
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語言中的指針,使用指針傳遞值才能改變調用參數變數的值)