簡體   English   中英

兩個類具有相同的API但實現不同意味着什么?

[英]What does it mean for two classes have the same API but different implementations?

我是Java和面向對象編程的初學者,對概念有些困難。 對於家庭作業,我需要編寫兩個具有相同API的不同類,但實現方式不同。 這是什么意思,它是如何工作的?

我會告訴你。這是兩個班級有相同api的例子。

interface ISpeak {
    void sayHi();
}

class Teacher implements ISpeak{
    @Override
    public void sayHi() {
        System.out.println("Hi!I am a Teacher!");
    }
}

class Student implements ISpeak{
    @Override
    public void sayHi() {
        System.out.println("Hi!I am a Student!");
    }
}

相同的API意味着這兩個類包含完全相同的公共方法列表(每個方法具有與另一個類相同的方法名稱和方法參數)。 這些方法的實現在每個類中可以不同。 此外,每個類還可以具有不出現在其他類中的私有方法,因為私有方法不是類向其用戶提供的API的一部分。

API通常由Java定義,因此具有相同API的兩個類通常會實現相同的接口。

你要求使用簡單的語言而不是“電腦說話”:

界面就像合同。 合同可能會說我們必須

  1. 告訴我你的名字(getName())
  2. 告訴我你排名(getRank())
  3. 告訴我你的號碼(getNumber())

合同有一個名字(通常以“能”結尾 - 可觀察等)讓我們說可識別。 如果我們聲明我們實施合同,我們必須滿足其所有要求。

你可能是一個人,我可能是一個機器人 - 具有其他不同特征和行為的不同類。

class Human extends Object implements Identifiable
class Robot extends Object implements Identifiable

該程序可以將我們視為非常不同的對象。 它可以告訴機器人去自行停靠和充電。 它可以告訴人類只做人類可以做的事情。 但它可以要求他們中的任何一個識別自己。

在Java和現代OOP的更廣泛的上下文中,它意味着兩個class應該實現相同的interface ,有效地允許這些類的客戶端依賴於該接口提供的抽象而不是那些具體類的實現細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM