2017-11-26 2 views
-2

私はカプセル化について勉強しています。クラスのすべてのデータメンバーを非公開にすることで、完全にカプセル化されたクラスをjavaに作成できます。カプセル化は定義された方法でどのように保護されますか?

他の誰も私のクラス変数に直接アクセスしてそれらを変更できないようにします。例については

Class MyAccount{ 

int AccountTotalAmt = 1000; 


} 

Class Mainclass{ 

public static void main(String[] args){ 

MyAccount Obj = new MyAccount(); 

obj.AccountTotalAmt = -200; (Just to avoid this kind of situations. Its just an example could be many more reasons) 


} 

} 

私が言ったように、私たちはやる「誰もが直接私のクラス変数にアクセスしないし、それらを変更することができます。」ので、そのそれらにアクセスするには、変数をprivateにし、getterとsetterを使用して変数を設定します。では、ここで何が違いますか?もし誰かがこれらのセッターとゲッターを知っていたら?そう簡単に変更することができます。

これは絶対的な計画ですか?誰かより良い方法で説明できますか?

+0

ゲッターとセッターは必要に応じて配置できます。つまり、誰かが値を設定したときに常に検証されるように、設定を行うことができます。また、誰も値を変更することができないようにゲッターだけを持つことができます。 – dwij

答えて

0

ここで違いは何ですか?もし誰かがこれらのセッターを知っていたら、 とゲッターも?そう簡単に変更することができます。ここ

ポイントは、あなたのフィールドが非公開で一度あなたが内部データアクセス者の完全な制御を持っています。ゲッターのみまたはセッターのみを許可するか、または両方を許可するかを決定します。その上に、有効なデータだけを許可するようにセッター内でいくつかの検証を実行することもできます。誰かの問題ではなく簡単に変更できます

+0

共有してくれてありがとう、あなたはsetterメソッドではなくゲッターしかアクセスできないように誰かを制限する方法を共有できますか?そして、管理者だけがフルコードを制御できますが、Javaの他のユーザーは制御できません。 –

関連する問題