JavaRush /Java Blog /Random-TW /為什麼需要接口?
Павел
等級 11

為什麼需要接口?

在 Random-TW 群組發布
為什麼需要接口? 為什麼需要介面繼承? 為什麼需要多態性? 適合那些閱讀並理解如何製作介面,但不明白為什麼的人。

免責聲明:在本文和後續文章中,類別和方法的命名將以俄語給出。

當涉及物件導向程式設計 (OOP) 的原則:多態性、繼承和封裝時,使用現實世界的類比會很有幫助。OOP 的一大優點是我們可以在程式中模擬真實宇宙的一部分。讓我們模擬伊凡諾夫一家:爸爸媽媽和男孩佩蒂亞Petya爸爸那裡 繼承了喝茶時發出聲音的習慣,從媽媽那裡繼承了讀書時撅起嘴唇的習慣。如果我們嘗試將這種情況實現到程式中,我們最終會得到三個類別:
class Папа
class Мама
class Петя
爸爸媽媽 有一些習慣需要遺傳給皮特。習慣是某種行為 - 因此最好將它們作為方法在軟體世界中實現:爸爸優先:
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
現在媽媽
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
如果我們談論繼承,那麼寫這樣的程式碼是合乎邏輯的:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
也就是同時從爸爸媽媽那裡 繼承Petya 。如果你這樣寫,編譯器會報錯,因為在Java中你無法實作多類別繼承。順便說一句,在 C++ 中可以,但在 Java 中不行,因為多重繼承會出現大問題:網路上有詳細寫。 為了解決這個「不可能」的問題,Java 提供了介面。對於習慣,我們將提出我們自己的介面。即使是兩個:它們看起來像這樣: 為什麼需要接口? - 1
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
在介面中我們只描述了習慣,並沒有描述它們具體是做什麼的,因為我們會把具體的實作寫在類別中。首先,讓我們給爸爸媽媽他們法律習慣。
class Папа implements ПривычкиПапы {

   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}

class Мама implements ПривычкиМамы{

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
現在,把爸爸媽媽的習慣同時 轉移給皮特是絕對合法的
class Петя implements ПривычкиПапы, ПривычкиМамы {

@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
也就是說,Java 中的多重實作(通常稱為實作)是很有可能的。 為什麼需要接口? - 2介面的含義現在應該很清楚了——在Java中,您可以使用介面實現多重繼承。如果我們進一步發展情況,例如:畢竟,爸爸媽媽可能有他們沒有遺傳給Petya的習慣,而Petya也可能有他自己的個人習慣。在接下來的幾集中,您將學習如何將這個重要的聖塔芭芭拉轉移到爪哇飛機。這並不是理解介面的唯一例子,如果你還沒讀過下面的文章,那麼一定要讀一下: Java中的介面(如果沒有打開,可以退出個人資料或以隱身模式閱讀) 為什麼需要介面Java - 實現本文中的所有範例,並更改介面和類別中的方法:方法名稱、簽名(方法作為輸入的內容)、方法的輸出類型。自己理解: - 用類別和抽象類別實作介面時的區別;- 預設方法。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION