1. 程式人生 > >用Java實現面向物件程式設計(入門)(四)

用Java實現面向物件程式設計(入門)(四)

四、■介面


1、介面中的屬性都是全域性靜態常量,介面中的方法都是全域性抽象方法,介面中沒有構造方法。


  ★Java中實現介面的定義語法和類實現介面的語法如下:
∵[修飾符] interface 介面名 extends 父介面1,父介面2,……{
//常量定義
//方法定義
 }
∴class 類名 extends 父類名 inplements 介面1,介面2,……{
//類成員
 }


  介面:a、命名規則和類相同;b、可以定義常量,不能定義變數(屬性都是全域性靜態常量);c、只有全域性抽象方法;d、和抽象類一樣,不能例項化,不能有構造方法;e、介面之間可以通過extends實現繼承關係,一個介面可以繼承多個介面,但介面不能繼承類;f、介面實現類必須實現介面的全部方法,否則必須定義為抽象類。(當類繼承並實現介面時,extends關鍵字必須在implements關鍵字之前。)


2、類只能繼承一個父類,但可以實現多個介面。一個類如果實現了一個藉口,則必須實現介面中的全部方法,否則必須將其自定義為抽象類。Java通過實現介面達到了多重繼承的效果。


3、介面表示一種約定,也表示一種能力。介面體現了約定和實現相分離的原則。


4、抽象類利於程式碼複用,介面利於程式碼維護。


5、通過面向介面程式設計,可以降低程式碼間的耦合性,提高程式碼的可擴充套件性和可維護性。


6、面向介面程式設計意味著:開發系統時,主題構架使用介面,介面構成系統的骨架,這樣就可以通過更換實現介面的類來實現更換系統。


7、C#中介面:a、介面成員主要是方法、屬性和索引器。b、介面中不能包含常量、變數、構造方法和任何靜態成員。c、定義介面時顯示指定任何修飾符是非法的。d、介面間可以通過冒號“:”來實現繼承關係,一個介面可以繼承多個介面,但介面不能繼承類。e、按照慣例,C#中介面的名稱以大寫字母“I”開頭。
  ★C#中定義介面的語法:
∵[修飾符] interface 介面名 : 父介面1,父介面2,……{
//屬性定義
//方法定義

∴class 類名 : 父類名,介面1,介面2,……{ }

8、在Java和C#兩種語言中,介面具有以下區別:
①Java中介面通過extends來繼承父介面,類通過implements實現介面;C#中通過冒號“:”來實現這兩個功能。
②Java介面中的成員變數(屬性)都是常量,自動用public static final修飾;C#介面中不允許存在成員變數,但可以有屬性。
③Java介面中屬性和方法都可以用public修飾;C#中預設為public,但不允許顯式使用public修飾。
④Java介面中可以定義靜態常量和方法;C#介面中不允許包含任何靜態成員。