我在R.爲什麼不推薦使用多重繼承?
創建S4類我https://github.com/hadley/devtools/wiki/S4
注意閱讀S4支持多重繼承,但因爲它使得方法查找極其複雜的本應使用 格外小心。
什麼是方法查找,爲什麼它更復雜的多重繼承?
我在R.爲什麼不推薦使用多重繼承?
創建S4類我https://github.com/hadley/devtools/wiki/S4
注意閱讀S4支持多重繼承,但因爲它使得方法查找極其複雜的本應使用 格外小心。
什麼是方法查找,爲什麼它更復雜的多重繼承?
當你鍵入f(x)
,x
屬於幾個類(比如A,B和C)時,計算機必須決定調用哪個方法(來自類A,B或C):這稱爲「方法查找」。
當代碼演變時,多繼承常常會造成問題。
想象一下,您已經編寫了兩個基類A和B,並且C類都從兩者繼承。一切正常。 幾個月後,開發人員使用A類,完全不知道B類和C類(他不需要它們),爲A類增加了一種新方法。他不知道,已經有了一種方法類B中的同名。類C的對象會發生什麼? A或B的方法會被使用嗎?在某些語言中,代碼可能會失敗,而在其他語言中,您可能會遇到未定義的行爲和難以捕捉的錯誤。
我想你的解釋對s4方法有點困惑 - 它們屬於函數而不是類。 – hadley 2012-01-13 02:36:54
只要確保你意識到無數的S4資源:http://stackoverflow.com/questions/4143611/sources-on-s4-objects-methods-and-programming-in-r – 2012-01-12 08:41:32