가능한 중복 사용 분야 :
Java protected fields vs public getters좋은 디자인 : 어떻게 슈퍼 클래스
내가 그 클래스 B는 확장과에서 내가 B도 사용하는 일부 필드가있는 경우 이 필드를 보호하고 클래스 B에서 호출하거나이 필드에 대한 getter 메서드를 작성하는 것이 좋습니다. 따라서이 메서드를 클래스 B에서 사용 하시겠습니까? (이 필드는 A의 구성 자로 설정 됨)
가능한 중복 사용 분야 :
Java protected fields vs public getters좋은 디자인 : 어떻게 슈퍼 클래스
내가 그 클래스 B는 확장과에서 내가 B도 사용하는 일부 필드가있는 경우 이 필드를 보호하고 클래스 B에서 호출하거나이 필드에 대한 getter 메서드를 작성하는 것이 좋습니다. 따라서이 메서드를 클래스 B에서 사용 하시겠습니까? (이 필드는 A의 구성 자로 설정 됨)
공개 인터페이스의 공용 멤버 데이터를 원하는대로 getter를 사용하려면 동일한 이유로 getter를 사용하십시오. 공용 클라이언트와 같은 서브 클래스는 내부에 자유롭게 액세스 할 필요가없는 컨트롤 외부의 클래스입니다.
내 의견으로는 클래스가 모두 구현 된 경우 수퍼 클래스를 확장하는 클래스의 내부를보다 잘 제어 할 수 있으므로 protected
개체/변수를 사용하는 것이 더 좋습니다. 전체 소스를 제어하기 때문에 캡슐화에 대해 너무 걱정하지 않아도됩니다.
클래스 소스가없는 다른 사용자가 클래스를 확장하려면 필요한 경우 getters를 사용하는 것이 좋으며 가능한 경우이를 피하십시오.
getter 및 setter 메서드를 사용하는 것이 항상 동일한 클래스 에서조차 더 나은 선택이라고 생각합니다! 그 이유는 아주 간단합니다. 이미징은 현장에 접근하는 방식을 바꾸고 싶습니다.
예를 들어 값을 보유하고있는 int에 액세스합니다. 이제 몇 가지 이유로이 값에 액세스하기 전에이 값에 항상 2를 곱하고 싶습니다. 당신은 접근 방법을 사용하면 간단한 변경 당신의 방법을 사용하는 경우 :
private int test = 5;
public int getValue() {
return test;
}
public int getValue() {
return test * 2;
}
에 당신이 직접 필드 테스트에 액세스 할 때 동일한하려는 경우는 변경하고자 할 때, 당신은 큰 문제가 소지품.
가능한 복제본 : http://stackoverflow.com/questions/2279662/java-protected-fields-vs-public-getters – smas