안드로이드 개발 질문/답변
(글 수 45,052)
변수들을 private로 선언하는 이유가 무엇인가요.
가끔 가다가 다른분들 코드 보면 전역변수 또는 지역변수든 private를 붙혀주시는 분이 계시던데요..
private는 해당 클래스(해당.java파일) 에서만 그 변수를 사용하겠다는 건데.
혹시 같은 패키지안에서 다른 클래스라도 전역변수로 같은 이름의 변수를 지정해서 사용하면
뭔가 문제가 되나요??
알고싶습니다.
2011.05.04 22:57:01
개인적인 소견입니다만, 그냥 개인 프로젝트고, 내가 만들어서 내가 릴리즈하는 거라면 크게 문제되진 않을거라 생각합니다.
프레임웍이나 라이브러리를 구축할 때 접근제어자의 중요성이 절실해질거라 생각해요^^
그게 아니라 그냥 프로젝트내에서 짜는거라면, 디버깅의 용이나 유지보수의 용이를 목적으로 접근제어자를 사용하는 것 같아요~
OOP에선 캡슐화라고 합니다만.. 클래스 객체 내부에서만 사용되어야 하는 변수를 클래스가 아닌 다른 곳에서 쓰이는데도
에러나 예외 등이 발생하지 않는다면 혼란이 있겠지요^^




class A{
public int value;
private int hidden;
}
class B{
public int value;
private int hidden;
}
이렇게 있을 때,
B 클래스 내부에서 A클래스의 인스턴스 a를 생성해서 사용한다고 가정합니다.
혹은 main이나 onCreate에서도 마찬가지입니다.
이 때, a.value라는 식으로 value에 대해서 접근이 가능하지만, a.hidden으로는 접근이 불가능합니다.
현재 B클래스 내부이기때문에 그냥 value를 사용하면 당연히 B 클래스 내부에서 정의된 value입니다.
여기서는 hidden도 사용할 수 있구요(B 클래스의 hidden)
다른 클래스에서 같은 이름으로 전역 변수를 지정하는 것은 문제가 안됩니다.
컴퓨터는 이름을 가지고 판단하는게 아니라 이름과 연결된 메모리를 참조해서 값을 가져오기 때문입니다.