우선 '속성'은 다른 언어로 된 다른 것들을 참조 할 수 있습니다. 예를 들어 Java에서는 인스턴스 변수를 의미하지만 C#은 두 변수를 구분합니다.
getters/setters에 대해 언급 한 이후 인스턴스 변수를 사용한다고 가정합니다.
다른 사람들이 언급 한 이유는 캡슐화입니다. 캡슐화는 우리에게 무엇을 사 주나요?
일을 변경해야합니다 (그리고 그들은 보통 할) 유연성
, 우리는 훨씬 적은 제대로 캡슐화 특성에 의해 빌드를 깰 가능성이 높다.
예를 들어 우리는 같은 변경을 결정할 수 있습니다 :
우리가 다음 우리가 변경할 수있는 더 많은 코드를 줄로 시작하는 'foo는'캡슐화하지 않았다면
int getFoo()
{
return foo;
}
int getFoo()
{
return bar + baz;
}
.
속성을 캡슐화하는 또 다른 이유는 (이 한 줄 이상), 총알 교정 우리의 코드의 방법을 제공하는 것입니다
우리는 뮤 테이터에서 중단 점을 설정할 수 이것은 또한 편리
void setFoo(int val)
{
if(foo < 0)
throw MyException(); // or silently ignore
foo = val;
}
, 그래서 우리는 무언가가 우리의 데이터를 수정하려고 할 때마다 깨질 수 있습니다.
우리의 재산이 공개 된 경우 우리는 아무 것도 할 수 없습니다!
모든 것이 게터와 세터를 사용하지 않기를 바랄뿐입니다. 일반적으로 구현 세부 사항을 노출함으로써 OOP의 원칙을 위반합니다. –