首頁 > 後端開發 > Golang > Go 的組合方法是否完全消除了脆弱基類問題?

Go 的組合方法是否完全消除了脆弱基類問題?

Mary-Kate Olsen
發布: 2024-10-29 07:33:03
原創
735 人瀏覽過

Does Go's Composition Approach Completely Eliminate the Fragile Base Class Problem?

Go 中的脆弱基類問題?

儘管擁抱組合而不是繼承,但有人擔心Go 是否仍然面臨“脆弱基類” “問題。本文研究了這個主題,並探討了語言級別的潛在解決方案。

脆弱基類問題

在經典的物件導向程式設計中,出現了脆弱基類問題當對基類的修改破壞了依賴其方法的子類時。這種情況是由於虛擬方法重寫,實際方法實現是在運行時確定的。採用組合代替繼承,但提供了一種嵌入機制,將嵌入類型的方法包含在嵌入類型中。 。 >

在Java 中

Java 對方法重寫的支援造成了脆弱基類問題的可能性。

MyCounter 將因MyCounter.Inc() 呼叫Counter.IncBy() 時無限循環而變得不可用,從而導致遞歸呼叫。 🎜>在Go 中,對Counter.IncBy() 進行相同的修改不會導致相同的問題。但這不會建立循環,因為呼叫的是Counter 的Inc() 函數,而不是MyCounter 的函數。

而Go 的組合機制和缺乏方法重寫將脆弱的基類問題緩解到了顯著的水平。

以上是Go 的組合方法是否完全消除了脆弱基類問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板