2017-11-26 16 views
-2

캡슐화에 대해 공부하고 있습니다. 클래스의 모든 데이터 멤버를 private로 만들어서 자바에서 완전히 캡슐화 된 클래스를 만들 수 있습니다.캡슐화는 정의 된 방식으로 어떻게 보호됩니까?

다른 사용자가 내 클래스 변수에 직접 액세스하여 변경할 수 없도록합니다. 예를 들어

:

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

원하는 게터와 설정기를 넣을 수 있습니다. 나는 누군가가 값을 설정할 때 항상 유효성을 검사 할 수 있도록 설정자에게 유효성 검사를 넣을 수 있음을 의미합니다. 또한 아무도 값을 변경할 수 없도록 값을 읽을 수 있도록 getters 만 가질 수 있습니다. – dwij

답변

0

여기에 어떤 차이가 있습니까? 만약 누군가가이 세터를 알고 있다면 과 getters도 마찬가지입니까? 그렇게 쉽게 변경할 수 있습니다. 여기

점은 필드 개인 일단 당신이 내부 데이터에 액세스하는 사람들의 완벽하게 제어 할 수 있습니다. getter 만 허용할지 또는 setter 만 허용할지 또는 둘 다를 허용할지 결정합니다. 그 위에, 당신은 또한 유효 데이터 만 허용하도록 설정 자 내에서 일부 유효성 검사를 수행 할 수 있으므로 다른 사람이 쉽게 변경할 수 있습니다..

+0

공유 주셔서 감사합니다. 다른 사람이 getter에만 액세스 할 수는 있지만 setter 메서드에는 액세스하지 못하도록 제한하는 방법을 공유 할 수 있습니까? 그리고 우리는 관리자 만이 전체 코드를 제어 할 수 있지만 자바의 다른 사용자는 제어 할 수 없다는 것을 어떻게 설정할 수 있습니까? –