java) private 접근제한자는 return으로도 접근가능한가요?
조회수 542회
class A {
private String name;
public void getName() {
return name;
}
}
이러한 클래스가 존재한다고 할때, 멤버 name은 private으로 설정되어있습니다
private은 클래스 내에서만 접근이 가능하잖아요?
그런데 저렇게 getName()
처럼 public으로 선언된 메소드에 name을 리턴시키면
오류가 안나더군요..
그럼 리턴 받은 인스턴스에서 값을 변경시킨다면 name의 값 또한 변경되는것 아닌가요?
왜냐하면 String 또한 클래스이므로 name도 초기화 시키면 인스턴스가 되므로
리턴을 하게되면 단순 문자열이 아닌 문자열 주소를 리턴시키게되니까,
리턴받은 인스턴스는 name과 같은 주소를 가르키게되겠죠.
그러니 인스턴스에서 값을 변경하면 name의 값도 변경될거라 생각되는데..
이렇게 되면 private이 무슨 의미가 있지하는 생각이 들었습니다..
단순 직접 접근을 제한하는 측면에서라면 이해하겠지만 private 사용이 코드의 안정성?을
높인다고 들었는데 이렇게 리턴해서 접근이 가능하다면 무슨 큰 의미가 있을까 생각이드는데
원래 이런건가요?
댓글 입력