簡體   English   中英

一個類的好習慣是實現兩個或多個接口嗎?

[英]Is a good practice to a class implements two or more interfaces?

我最近看到了這種方法,我不能不明白這不是一個好習慣。 原因如下:

  1. 依賴關系,如果在接口中添加新方法,則其他所有類都必須實現它;

  2. 內存使用情況,(我不確定在這里)當實例化此類中的對象時,內存使用情況將比僅具有關聯關系時要高;

我認為某些語言出於某種原因不允許使用這種功能 ,但是對於Java,我對此不太確定。 誰能解釋為什么我們應該在一個類中實現多個接口,或者為什么不應該這樣做?

謝謝!

這里沒有經驗法則,您建議的任何要點都不適用。 實際上,您的第一點沒有意義,而第二點只是一個錯誤的猜測。

如果看一下JDK類,您將很容易地看到一個類實現了多少個(以及哪個)接口的基礎。 例如,許多集合類至少實現Iterable及其各自的集合接口( ListSetMap等)。

這是一種設計選擇,盡管沒有什么可以阻止您創建Runnable List ,但您需要做出明智的選擇才能創建出如此奇特的東西。

提到的接口default方法是一種機制,它可以在改進現有類的同時保持向后兼容性(Java的重要設計方面)。

因此,查看設計時,計數的不是接口數量。

與實現一個接口相比,實現更多的接口與內存效率無關。

實現一個接口(看看“對接口編程”什么意思? )是一種本質上避免多重繼承的設計。

如您所引用:

如果在界面中添加新方法,所有其他類都必須實現它

並非所有課程。 僅使用實現接口的類。 這意味着您的對象需要具有共同的行為集,並根據其各自的需求來實現。

但是,在某些情況下,您不需要每個類都需要實現已實現接口所需的方法。 這在Java 8中已得到克服,在Java 8中,您具有提供默認實現的Default Methods

回應您的第一點:在JDK 8中,您可以將接口方法聲明為default方法,並在該接口內提供實現,這樣,所有實現類都不必實現新方法(不過,如果願意,它們可以覆蓋) 。

某些語言允許一個類的多個超類,但Java不允許。 因此,由於此限制,Java允許多個接口。

首先,您說過“如果在接口中添加新方法,所有其他類都必須實現它”。

因此,如果您不想那樣寫,可以使用抽象類。 我認為這不是界面問題。 那是關於設計模式。 您應該了解它。 如果您非常了解OOP概念,則多接口實現會非常好。

暫無
暫無

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

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