理論上是健全覆蓋父方法在子類中與其中的參數在父類的參數的超類型,就像一個方法:是否存在具有繼承性的靜態類型編程語言,其中方法參數是逆變的?
class T
def foo(s: String) = ...
class S
override def foo(a: Any) = ...
哪些編程語言支持這個「功能」,以及如何做他們解決的問題,如的可能性,即一個子類的單個方法可以重寫父類的多種方法:(假設String
和Int
的Any
亞型)
class T
def foo(s: String) = ...
def foo(i: Int) = ...
class S
override def foo(a: Any) = ...
如果你談論的是靜態類型語言比我不知道。動態類型的語言不關心這個問題,所以我假設你正在談論靜態類型的語言。請在你的問題中註明。 –
維基百科稱,一個名爲「Sather」語言有逆變(http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29#Sather,http://en.wikipedia.org/wiki/Sather),但我不能保證其準確性。 –
我不知道這樣的語言,但我認爲一個方法可以覆蓋超類的多個方法的事實沒有問題。當你執行'sInstance.foo(anyObject)'時,這個方法被調用。而不是'T.foo(String)'和'T.foo(Int)'。編譯器沒有問題。只是你,作爲一個程序員,有那麼這個調用是有道理 – piotrek