D
asc schrieb:
Warum sollte man in deinem Beispiel "Calculate" nicht direkt auf der abgeleiteten aufrufen können?
weil es sich um ein einfaches Beispiel zum NVI handelt, wo ich nicht mehr Gehirnschmalz als unbedingt nötig reinstecken wollte.
"Calculate" darf nicht direkt aufgerufen werden, weil "Derived" erst einen Mutex setzen muss. Und bevor wieder gemeckert wird: Klar, könnte man den Mutex auch in Base setzen. Aber wenn Base zu einer externen Lib gehört, lässt sich das nicht ändern.
oder
Es ergibt keinen Sinn, "Calculate" von außen aufzurufen, weil Base als Timer implementiert ist, der periodisch prüft, ob die abgelaufene Zeit einen Schwellenwert überschreitet und wenn ja, die private Funktion aufruft.
Klar könnte man das alles sicher auch anders modellieren. Aber nur, weil mir jetzt keine 100% überzeugenden Beispiele einfallen, muss das Konzept ja nicht prinzipiell schlecht sein. Oder gibt es gute Gründe, warum NVI immer public sein sollte?
edit:
asc schrieb:
Private Vererbung halte ich eher dann für sinnvoll wenn man ein funktionelle Vererbung haben, aber nicht nach außen die gleiche Schnittstelle anbieten will.
genau. Und ich will die Funktion von "Base" nuzten und intern "Calculate" aufrufen, ohne diese Schnittstelle nach außen anzubieten.