0

基本クラスのカプセル化を壊すので、保護されたメンバーを使用するのは良くないと聞きました。プライベート メンバーよりも保護されたメンバーを使用する利点、または基底クラスでその逆を使用する利点を知る必要があります。誰でも助けることができますか?

4

3 に答える 3

3

プライベート メンバーを使用する場合よりも、保護されたメンバーを使用する明確な利点はありません。それはあらゆる点で概念的に異なります。

private: クラス内でのみメンバーを使用できます

protected: メンバーはクラス内およびそのサブクラス内で使用できますが、外部からは使用できません

public: メンバーは、クラス内外のどこからでも呼び出して表示できます

つまり、表現したいものに基づいてコンセプトを選択してください。メンバーをオーバーライドする必要がある場合は、それらを保護してください。

絶対にお勧めできないのは、「念のため」の状況に備えてメンバーを保護することです。オーバーライドできるフックがあることを表現したい場合は、そのときだけ、それらを保護します。これは、オーバーライドされたメンバーが使用されている場所など、他の場所のコードで表現する必要があります。

于 2013-02-05T12:12:29.353 に答える
2

クラスの外部から使用してはならない基本クラスに関数があるとしますが、サブクラスによってオーバーライドする必要がある場合があります。その後、保護することができます。

于 2013-02-05T12:08:39.120 に答える
1

実際には、プライベートとプロテクトの間の長所または短所について話すことはできません. あなたが何をしても、継承は常に何らかの方法でカプセル化を破ります。要件に従ってアクセス修飾子を設定する必要があります。派生クラスが基本クラスのメソッドを使用またはオーバーライドしたい (または必要とする) 場合は、それを保護することができます。

于 2013-02-05T12:10:16.937 に答える