我希望這不是重複的,但我無法通過Google或SO搜索找到。如果我想強制一個方法的重載方法的實現的可訪問性爲protected
,是我的唯一選擇,要麼創建爲abstract
或protected virtual
?我知道接口指定了聲明,但將可訪問性/範圍留給了類實現,但我想確定。子方法的限制範圍
我想知道/確定是否限制方法範圍的唯一方法是通過abstract
\ protected virtual
給出「這適用於類實現或子覆蓋實現」的語義。
要說明的代碼示例。我知道我可以做到以下幾點,並且像這樣限制實現的範圍;
public class BaseClass
{
protected virtual void OnlyMeOrChildrenCanDoAction()
{
// leave empty as current class is structural/conceptual
// but child instances may need it
}
}
通過做上述保證了我的孩子實現只override
OnlyMeorChildrenCanDoAction()
爲protected
但不public
可以。
但是,有沒有另一種方法限制到protected
而不訴諸於abstract
或protected virtual
?創建這種方法的示例是Object.Finalize()
,如here所示。
或者,爲了稍微反轉問題,爲什麼要創建一個方法爲protected virtual
,除非確保任何實現的範圍有限?或者還有另一種方法來做同樣的事情嗎?
我很難理解你想問什麼。我會建議添加一些代碼示例。我不是downvoter,雖然 – maccettura
我仍然很迷路。 – maccettura
@maccettura如果我創建一個方法'保護虛擬'我保證只有子實現可以使用'protected'方法。我不能讓子實現將它覆蓋爲「public」。上述方法是否僅限於此? – DiskJunky