簡體   English   中英

從兩個抽象類繼承,其中一個還需要另一個基類的部分

[英]Inherit from two abstract classes, where one of them also needs parts of the other base class

這更多是一個沒有實際代碼示例的理論問題,我不確定我是否只是想多了。

整個事情是我正在處理的 GUI 實現的一部分,其中 GUI 表示為由LeafsNodes特化組成的樹結構,然后具有一些特殊行為,如文本內容、圖像或在其特定render()處理的任何內容render()實施。
但是,我的問題是,我希望在某些 GUI 上具有Hover功能,但Hover功能需要一些! 基本 GUI 元素功能的一部分,如圖所示,現在我無法理解如何將這兩個部分連接到最終的Button類。 它必須繼承所有Leaf功能以及抽象的Hover內容。

UML圖

有沒有辦法按照我想象的方式完成這項工作? 或者我是否必須為所有 GUI 提供此Hover功能,並為不使用它的人實現一個空白的onMouseEnter()onMouseExit()
我不想將它提供給所有 GUI 的原因是因為檢查鼠標是否懸停在元素上不是免費的。 並非所有元素都必須是交互式的。

一些注意事項:
- Hover也可能被節點特化繼承
- Hover中的功能列表已完成
- LeafNode都以不同的方式實現了Element一些抽象函數

如果您可以為此想出更好的標題,請隨時提出修改建議

我會將 Element 和 Hover 的通用功能提取到一個通用基類中:

           MouseBase
               |
 ------------------------------
 |                            |
 |                          Element
 |                            |
Hover                         |
 |             -------------------------------
 |             |                             |
 |            Leaf                          Node
 ---------------
        |
      Button

在這種情況下,如果 MouseBase 是一個虛擬基類,Button 將獲得它的一個單一版本,否則它將通過 Element 繼承獲得一個版本,並通過 Hover 繼承獲得第二個版本。

暫無
暫無

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

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