簡體   English   中英

關於Java接口的問題

[英]question about java interfaces

假設我有以下紅寶石代碼:


def use_object(object)
  puts object.some_method
end

和,這將對任何響應some_method的對象起作用,對嗎?

假設存在以下java接口:


interface TestInterface {
   public String some_method();
}

我是否可以正確假定接口是java實現同一件事的方式(唯一的區別是參數的類型為TestInterface )?

您是對的,只是您不能在Java Interfaces中定義函數的主體,而只能定義原型。

接口是在Java中實現偽多重派生的唯一方法,因為普通的類派生僅是簡單的(只有一個父類)。

否,未實現中的接口。 您可以有多個實現。

接口看起來更像:

interface TestInterface {
   public String some_method();
}

它可以在一個類中實現:

public class TestClass implements TestInterface {
   public String some_method() {
       return "test";
   }
}

也許更多的類以不同的方式實現此方法。 實現接口的所有類都必須實現接口聲明的方法。

使用接口,您無法達到與Ruby示例中完全相同的效果,因為Java是靜態類型的。

Java接口定義實現類必須提供的方法簽名。 JavaDoc對此進行了詳細解釋。

在Java接口中,只能用於聲明方法,不能用於定義(實現)它們。 只有類可以實現方法。 但是類可以實現接口。 因此,例如,您可以使用Adapter模式來實現您在ruby中所做的相同操作。

是的,但是僅當您要抽象出“具有some_method()的任何東西”作為單獨的概念時。 如果只有一個具有some_method()的類,則無需指定接口,而use_object()的參數將是該類。

還要注意,在Java中,我們使用camelCase而不是underscore_separated名稱。

似乎您正在嘗試使用Java在Ruby中進行編程,您想重新考慮使用更多語言習語的方法。

暫無
暫無

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

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