2011-03-19 4 views
7

가능한 중복 사용 분야 :
Java protected fields vs public getters좋은 디자인 : 어떻게 슈퍼 클래스

내가 그 클래스 B는 확장과에서 내가 B도 사용하는 일부 필드가있는 경우 이 필드를 보호하고 클래스 B에서 호출하거나이 필드에 대한 getter 메서드를 작성하는 것이 좋습니다. 따라서이 메서드를 클래스 B에서 사용 하시겠습니까? (이 필드는 A의 구성 자로 설정 됨)

+1

가능한 복제본 : http://stackoverflow.com/questions/2279662/java-protected-fields-vs-public-getters – smas

답변

2

공개 인터페이스의 공용 멤버 데이터를 원하는대로 getter를 사용하려면 동일한 이유로 getter를 사용하십시오. 공용 클라이언트와 같은 서브 클래스는 내부에 자유롭게 액세스 할 필요가없는 컨트롤 외부의 클래스입니다.

1

내 의견으로는 클래스가 모두 구현 된 경우 수퍼 클래스를 확장하는 클래스의 내부를보다 잘 제어 할 수 있으므로 protected 개체/변수를 사용하는 것이 더 좋습니다. 전체 소스를 제어하기 때문에 캡슐화에 대해 너무 걱정하지 않아도됩니다.

클래스 소스가없는 다른 사용자가 클래스를 확장하려면 필요한 경우 getters를 사용하는 것이 좋으며 가능한 경우이를 피하십시오.

1

getter 및 setter 메서드를 사용하는 것이 항상 동일한 클래스 에서조차 더 나은 선택이라고 생각합니다! 그 이유는 아주 간단합니다. 이미징은 현장에 접근하는 방식을 바꾸고 싶습니다.

예를 들어 값을 보유하고있는 int에 액세스합니다. 이제 몇 가지 이유로이 값에 액세스하기 전에이 값에 항상 2를 곱하고 싶습니다. 당신은 접근 방법을 사용하면 간단한 변경 당신의 방법을 사용하는 경우 :

private int test = 5; 

public int getValue() { 
    return test; 
} 

public int getValue() { 
    return test * 2; 
} 

에 당신이 직접 필드 테스트에 액세스 할 때 동일한하려는 경우는 변경하고자 할 때, 당신은 큰 문제가 소지품.