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보다 작으면 안된다던지
암튼 val을 가지고 지지고볶고 하는걸 ch1을 사용하는 사용자가
내부적으로 어떻게 동작하는지 숨길수 있게하는
oop의 특징중 하나인 은닉화가 가능해진다.
댓글
댓글 쓰기