기본 콘텐츠로 건너뛰기

12월, 2015의 게시물 표시

public, private 차이

public, private 기본중에 기본 근데 아직도 뭔가 헷갈린다. private : 내부만 접근 public : 외부에서도 접근 내부외부라는 말이 좀 애매하다. 암튼 예로 클래스를 하나 만들자 멤버 변수를 설정할때 한놈은 private, 한놈은 public public class ch1 { public int a ; private int b ; } 이클래스를 가지고 가장 간단하고 확실하게 테스트 해보자 public class test { public static void main(String [] args){ ch1 c = new ch1(); c. a = 10 ; c. b = 20 ; System. out .println(c. a ); System. out .println(c. b ); } } 위대로 컴파일 해대면 바로 오류난다. Error:(9, 10) java: b has private access in ch1 라고.. c는 ch1을 가지고 새로운 객체를 만들었지만, private으로 선언된 변수는 자기 멤버변수라고해도 맘대로 접근을 할수가 없다. 그렇다면 c.b를 건드리려면 어케 해야되나 public class ch1 { public int a ; private int b ; public void setB ( int val){ this . b =val; } public int getB (){ return this . b ; } } 이럴때 쓰라고 만든게 게터세터 다. private한것들은 이처럼 클래스 자체 메소드를 활용해야만 쓸 수 있다. 이렇게 되면 최초 클래스를 생성한 쪽에서만 내부 사정을 알고 이걸 사용하는 사용자 입장에서는 메뉴얼대로 실행만 하면된다. 즉 setB에다가 val이 0보다