이것은 숙제 인 질문입니다 : 다음 클래스 중 밀접하게 캡슐화되지 않은 것은 무엇입니까? 밀접하게 캡슐화 된 클래스
class A
{
private int x;
}
class B
{
private int x;
public void setX(int x)
{
this.x=x;
}
public int getX()
{
return x;
}
}
class C
{
private int x;
private void setX(int x)
{
this.x=x;
}
private int getX()
{
return x;
}
}
나는 coderanch에서 검색 시간을 소비하지만, 필요한 물건을 얻을 수 없습니다. 아무도 나를 도울 수 있습니까?
내가 생각하기에 클래스 C는 밀접하게 캡슐화되지 않았으므로 메서드가 비공개입니다. 그리고 클래스 A에 관해서는 그것이 캡슐화되지 않는다고 느낍니다. 캡슐화의 기본 정의에서는 "멤버를 숨기고 원하는 방식으로 동작하는 클래스 사용자에게 메서드를 제공해야합니다."라고 말합니다. 이제 클래스 A에는 접근 자 - 변경자 메서드가 없습니다. 따라서 A는 캡슐화 된 것으로 간주되어서는 안됩니다. 나는 확실하지 않지만. 내가 틀렸다면 나를 바로 잡아주세요.
이 아마 개인 캡슐화되지 않습니다하지로 정의 하나 개의 멤버 변수를 포함하는 경우 모든 멤버 변수 비공개로 모든 클래스가 긴밀하게 캡슐화되어 NB로 선언 의미 당신을 도울 수는 없겠지만, 질문은 어리석은 추상 방식으로 제기됩니다 (아마 당신의 강사에 의해). 클래스는 클라이언트가 필요로하는 인터페이스만을 공개 할 때 밀접하게 캡슐화됩니다. 주어진 클래스의 목적을 모른 채 의미있게 말하기 란 거의 불가능합니다. – millimoose