これは私の宿題に関する質問です。 次のうちクラスが密にカプセル化されていませんか?きつくカプセル化されたクラス
class A
{
private int x;
}
class B
{
private int x;
public void setX(int x)
{
this.x=x;
}
public int getX()
{
return x;
}
}
class C
{
private int x;
private void setX(int x)
{
this.x=x;
}
private int getX()
{
return x;
}
}
私はしばらく時間をかけてコードを検索しましたが、必要なものを手に入れることができませんでした。誰でも助けてくれますか?
私はクラスCは密接にカプセル化されていないと考えていますが、メソッドはプライベートであるためです。そしてクラスAについては、カプセル化されていないことだけが感じられます。カプセル化の基本的な定義では、「メンバーを非表示にして、必要な方法で動作するメソッドをクラスに提供する必要があります。クラスAにはアクセサ・ミューテータ・メソッドはありません。したがって、Aはカプセル化されていると見なされるべきではない。私は確信していませんが。私が間違っていれば私を修正してください。
これはおそらくプライベートカプセル化されることはありませんではないと定義されて1つのメンバ変数が含まれている場合は、すべてのメンバ変数がプライベートので、すべてのクラスが緊密に封入されている NBとして宣言されていることを意味します助けにはならないでしょうが、質問は(おそらくあなたのインストラクターによって)馬鹿げた抽象的な方法で提起されています。クライアントが必要とするインタフェースのみを公開する場合、クラスは密にカプセル化されます。あるクラスの目的を知らずに意味のあることを言うのはかなり不可能です。 – millimoose