簡體   English   中英

Java vs Smalltalk - 協變和逆變

[英]Java vs Smalltalk - covarince and contravariance

Smalltalk 是否支持協變和逆變? 這些概念適用於這種語言嗎?

協變和逆變是與參數和返回值的聲明類型相關的概念。 例如,如果子類方法中的參數類型可以指定比超類中的類型更通用的類型,則方法參數是逆變的。

Smalltalk 沒有靜態類型聲明。 您可以應用協變和逆變的概念,但由於該語言允許您向任何對象發送任何消息,因此它不會強制執行協變和逆變可能需要的任何規則。

所以,是的,Smalltalk 支持協變和逆變,因為它允許您使用這些概念,而不是因為它不關心任何一種方式。

Smalltalk 是嚴格和動態類型的。 它只關心參數對象是否響應它發送的消息。 如果沒有,它會在發送消息時在運行時引發 DNU(無法理解)(您可以手動處理,也可以在代碼中響應)。 在編譯時,每個參數都是一個對象,您可以向任何對象發送任何消息。

暫無
暫無

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

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