日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1.12 接口(Interface)的定义和实现

發布時間:2025/3/20 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.12 接口(Interface)的定义和实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

抽象類是從多個類中抽象出來的模板,如果將這種抽象進行的更徹底,則可以提煉出一種更加特殊的“抽象類”——接口(Interface)。

接口是 Java 中最重要的概念之一,它可以被理解為一種特殊的類,不同的是接口的成員沒有執行體,是由全局常量和公共的抽象方法所組成。

在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。

定義接口

Java 接口的定義方式與類基本相同,不過接口定義使用的關鍵字是 interface,接口定義的語法格式如下:

[public] interface interface_name [extends interface1_name[, interface2_name,]] {// 接口體,其中可以包含定義常量和聲明方法[public] [static] [final] type constant_name = value; // 定義常量[public] [abstract] returnType method_name(parameter_list); // 聲明方法 }

對以上語法的說明如下:

  • public 表示接口的修飾符,當沒有修飾符時,則使用默認的修飾符,此時該接口的訪問權限僅局限于所屬的包;
  • interface_name
    表示接口的名稱。接口名應與類名采用相同的命名規則,即如果僅從語法角度來看,接口名只要是合法的標識符即可。如果要遵守 Java可讀性規范,則接口名應由多個有意義的單詞連綴而成,每個單詞首字母大寫,單詞與單詞之間無需任何分隔符。
  • extends 表示接口的繼承關系;
  • interface1_name 表示要繼承的接口名稱;
  • constant_name 表示變量名稱,一般是 static 和 final 型的;
  • returnType 表示方法的返回值類型;
  • parameter_list 表示參數列表,在接口中的方法是沒有方法體的。

注意:一個接口可以有多個直接父接口,但接口只能繼承接口,不能繼承類。

接口與類的區別:

  • 接口不能用于實例化對象。

  • 接口沒有構造方法。

  • 接口中所有的方法必須是抽象方法。

    1. 接口里的方法都有個修飾詞組合: public abstract2.跟接口方法一樣, 這兩個修飾詞也可以省略不寫.3.既然是抽象方法, 則不能包含方法體.而且接口里不允許存在非抽象的方法
  • 接口不能包含成員變量,除了 static 和 final 變量。

1.不能用protected 或 private 來修飾成員, 否則編譯失敗.
2.public static final int i =10;

  • 接口不是被類繼承了,而是要被類實現(implements)。
  • 接口支持多繼承。

接口特性

  • 接口中每一個方法也是隱式抽象的,接口中的方法會被隱式的指定為 public abstract(只能是 public abstract,其他修飾符都會報錯)。
  • 接口中可以含有變量,但是接口中的變量會被隱式的指定為 public static final 變量(并且只能是 public,用 private 修飾會報編譯錯誤)。
  • 接口中的方法是不能在接口中實現的,只能由實現接口的類來實現接口中的方法。

接口對于其聲明、變量和方法都做了許多限制,這些限制作為接口的特征歸納如下:

  • 具有 public 訪問控制符的接口,允許任何類使用;沒有指定 public 的接口,其訪問將局限于所屬的包。
  • 方法的聲明不需要其他修飾符,在接口中聲明的方法,將隱式地聲明為公有的(public)和抽象的(abstract)。
  • 在 Java 接口中聲明的變量其實都是常量,接口中的變量聲明,將隱式地聲明為 public、static 和
    final,即常量,所以接口中定義的變量必須初始化。
  • 接口沒有構造方法,不能被實例化。例如:
public interface A {publicA(){} // 編譯出錯,接口不允許定義構造方法 }
  • 一個接口不能夠實現另一個接口,但它可以繼承多個其他接口。子接口可以對父接口的方法和常量進行重寫。例如:
public interface StudentInterface extends PeopleInterface {// 接口 StudentInterface 繼承 PeopleInterfaceint age = 25; // 常量age重寫父接口中的age常量void getInfo(); // 方法getInfo()重寫父接口中的getInfo()方法 }

例如,定義一個接口 MyInterface,并在該接口中聲明常量和方法,如下:

public interface MyInterface { // 接口myInterfaceString name; // 不合法,變量name必須初始化int age = 20; // 合法,等同于 public static final int age = 20;void getInfo(); // 方法聲明,等同于 public abstract void getInfo(); }

實現接口(implements)

接口的主要用途就是被實現類實現,一個類可以實現一個或多個接口,繼承使用 extends 關鍵字,實現則使用 implements 關鍵字。因為一個類可以實現多個接口,這也是 Java 為單繼承靈活性不足所作的補充。類實現接口的語法格式如下:

<public> class <class_name> [extends superclass_name] [implements interface1_name[, interface2_name…]] {// 主體 }

對以上語法的說明如下:

  • public:類的修飾符;
  • superclass_name:需要繼承的父類名稱;
  • interface1_name:要實現的接口名稱。

實現接口需要注意以下幾點:

  • 實現接口與繼承父類相似,一樣可以獲得所實現接口里定義的常量和方法。如果一個類需要實現多個接口,則多個接口之間以逗號分隔。
  • 一個類可以繼承一個父類,并同時實現多個接口,implements 部分必須放在 extends 部分之后。
  • 一個類實現了一個或多個接口之后,這個類必須完全實現這些接口里所定義的全部抽象方法(也就是重寫這些抽象方法);否則,該類將保留從父接口那里繼承到的抽象方法,該類也必須定義成抽象類。

例 1
在程序的開發中,需要完成兩個數的求和運算和比較運算功能的類非常多。那么可以定義一個接口來將類似的功能組織在一起。下面創建一個示例,具體介紹接口的實現方式。

1)創建一個名稱為 IMath 的接口,代碼如下:

public interface IMath {public int sum(); // 完成兩個數的相加public int maxNum(int a,int b); // 獲取較大的數 }

2)定義一個 MathClass 類并實現 IMath 接口,MathClass 類實現代碼如下:

public class MathClass implements IMath {private int num1; // 第 1 個操作數private int num2; // 第 2 個操作數public MathClass(int num1,int num2) {// 構造方法this.num1 = num1;this.num2 = num2;}// 實現接口中的求和方法public int sum() {return num1 + num2;}// 實現接口中的獲取較大數的方法public int maxNum(int a,int b) {if(a >= b) {return a;} else {return b;}} }

在實現類中,所有的方法都使用了 public 訪問修飾符聲明。無論何時實現一個由接口定義的方法,它都必須實現為 public,因為接口中的所有成員都顯式聲明為 public。

3)最后創建測試類 NumTest,實例化接口的實現類 MathClass,調用該類中的方法并輸出結果。該類內容如下:

public class NumTest {public static void main(String[] args) {// 創建實現類的對象MathClass calc = new MathClass(100, 300);System.out.println("100 和 300 相加結果是:" + calc.sum());System.out.println("100 比較 300,哪個大:" + calc.maxNum(100, 300));} }

程序運行結果如下所示。

100300 相加結果是:400 100 比較 300,哪個大:300

在該程序中,首先定義了一個 IMath 的接口,在該接口中只聲明了兩個未實現的方法,這兩個方法需要在接口的實現類中實現。在實現類 MathClass 中定義了兩個私有的屬性,并賦予兩個屬性初始值,同時創建了該類的構造方法。因為該類實現了 MathClass 接口,因此必須實現接口中的方法。在最后的測試類中,需要創建實現類對象,然后通過實現類對象調用實現類中的方法。

總結

以上是生活随笔為你收集整理的1.12 接口(Interface)的定义和实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。