JavaRush /Java Blog /Random-TW /Java 中的介面
vinsler
等級 35

Java 中的介面

在 Random-TW 群組發布
如果我的目標不是向有特定要求的人解釋一些難以理解的事情,那麼我就是一個糟糕的說故事者,所以我理解簡單的事情,一方面我會在這裡寫下來。我不遵循 JavaRush 教學範例,先提出問題,然後告訴您如何做。我支持先講述,然後詢問,就像講述,先展示,然後解釋一樣。
Java 中的介面 - 1
BS:動作==行為,將它們視為同義詞,動作只是更正確地理解,它始終是活動的東西,而行為可能不會表現出任何東西。

接口-接口

這是什麼?介面清單範例(帶有泛型):
public interface Store<T, ID> {
    void add(T t);
    void update(T t, ID i);
    void delete(ID i);
    T findOne(ID i);
    List<T> findAll();
}
通用 CRUD(來自 CRUD:建立、讀取、更新、刪除)介面。 不要驚慌,一切都很簡單。這個介面意味著使用許多資料庫是基於以下原則:您需要新增記錄、更新記錄、刪除和查找所有記錄。您將會遇到這個 100 次以上,並自己編寫幾乎相同的介面相同的次數。 它被指定為公共的,因為它必須由類別來實現。由類別來實現是什麼意思?一切都很簡單:它必須描述介面的所有方法。最簡單的類別實作範例:
void add (T t) {
	bookstore.add(t);
}
將用某個通用名稱代替 T t。簡而言之,這是變數的類型,這就是為什麼它最常表示為 T = 類型。在我們的例子中,假設它可能是這樣的:
void add (Book book) {
	bookstore.add(book);
}
當然,您可以替換實作中所需的任何變數來取代 Book book。為了理解這一點,理論上你可以想像 T = Object,並且由於在 Java 中一切都是對象,因此你也可以在那裡定義任何類別/變數。唯一的麻煩會在稍後出現 - 如果類別為零,則會出現異常,等等。用它自己的話來說,它是一種特定的程序結構,透過將物件劃分為某些行為部分來定義物件之間的關係。介面的目的是定義由類別實現的功能。即方法簽名的描述。介面內部有回傳值和輸入值的方法名稱,僅此而已。好吧,您仍然可以在那裡指定一些變量,但它們立即變成隱式 public static final,並且可以從程式的任何部分存取。該介面描述了動作,因此這些相同的動作也包含在其中,即 函數或方法。 為什麼這是必要的?這簡化了什麼或它提供了什麼優勢? 簡化動作和行為的描述。我們說要做什麼,但每個類別自己實作如何做。節省大型專案的時間。介面是在我們知道需要執行某些任務但執行方式可能有所不同的情況下建立的。介面描述了動作的名稱——這只是一些抽象的方向。雖然也可能存在沒有方法和欄位的接口,例如Cloneable、Remote等標記。讓我們以每個人最喜歡的汽車為例。裡面的介面會描述汽車可能的動作,轉動方向盤或移動方向,速度增益,剩餘汽油等。也就是說,任何汽車都可以執行相同的操作。換句話說,我們陷入了退化的叢林,直到第一輛汽車的最低創造水平,並用我們自己的大腦弄清楚它是如何創造的以及它有什麼。當然,我們只是抽像地描述這一點,並且僅用於操作。第一輛車有什麼?有方向盤嗎?它是,這意味著它正在轉向某個地方,方向盤/運動的方向。有輪子嗎?是的,這意味著我正在以某種速度行駛,速度改變了。這就是整個介面。但一般來說,介面是為了某些操作的某些實現而創建的。那些。我們編寫的程式比您能想到的任何其他程式都更具體。因此,介面本身將包含更清晰、更具體的方法。當然,它們會盡可能抽象。介面可以作為類別相互繼承。
interface MyInterface extends NotMyinterface;
介面在類別中實作。您可以根據需要實現任意多個介面。與繼承不同,僅從一個繼承。
class NewClass extends OldClass implements MyInterface, NotMyinterface;
那些。我們想出了一些動作,給它們命名,輸入數據,返回數據,將所有這些寫在介面中,然後創建一個類別並將我們的介面添加到這個類別中,即 在這個類別中實作了我們的介面。此外,介面中描述的所有方法/函數都必須有一個實作。可以直接在介面本身中完成,方法是在方法之前添加 default 一詞,然後像類別一樣直接在方法中編寫實作。這在 Java 版本 8 中成為可能。也可以在實作該介面的類別中完成。好吧,我們已經編寫了接口,在類別中實現了它,在類別中推出了實現,我們可以運行它並測試它。您也可以在介面中閱讀以下內容:
  • 靜態方法。
  • 私有方法。(程式碼重複)
  • 變數/常數。
  • 嵌套介面。
但最好以後再做,而且腦子裡裝太多也是有害的。有趣的問題,什麼是沃爾沃?類別還是介面?
line1: Volvo v = new VolvoV2();
line2: Volvo v = new VolvoV3();
除了介面之外,抽象類別和類別也值得繼續。也許稍後,當我還有幾個小時的空閒時間時。))) PS:夥計們,我要求在帖子下或PM中提出所有批評,我完全理解每個人都有它)))並且我總是有興趣聽到它,因為這是變得更好一點的原因再次繼續前進。在此,非常感謝大家,祝程式設計順利。)))
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION