캡슐화: 정보 은닉

2022. 11. 15. 15:47책 공부/스프링 입문을 위한 자바 객체 지향의 원리와 이해

반응형

자바에서 정보 은닉이라고 하면 접근 제어자인 private, [default], proteced, public 과

접근자 및 설정자 메서드도 생각날 것이다.

 

접근 제어자가 객체 멤버( 인스턴스 멤버 ) 와 쓰일 때와 정적 멤버( 클래스 멤버 )와 함께 쓰일 때를 비교해서 살펴보자.

 

 

객체 멤버의 접근 제어자

 

ClassA가 정적 속성인 priSt, defSt, proSt, pubSt를 가지고 있다고 가정해보고 아래표를 작성해 보자.

package main01;

public class ClassA {
	 private static String priSt;
	 static String defSt;
	 protected static String proSt;
	 public static String pubSt;
	    
	 void runSomething() {}
	    
	 static void runStaticThing() {}
}

public class ClassB {
	
	void runSomething() {}
    
	static void runStaticThing() {}
}

public class ClassAA extends ClassA {

	void runSomething() {}
    
	static void runStaticThing() {}
}
package main02;

import main01.ClassA;

public class ClassAB extends ClassA {

	void runSomething() {}
    
	static void runStaticThing() {}
}

public class ClassC {
	
	void runSomething() {}
    
	static void runStaticThing() {}
}

 

 

classA의 정적 멤버
priSt defSt proSt pubSt
main01 ClassA runSomething()
runStaticThing()
ClassA runSomething()
runStaticThing()
ClassAA runSomething()
runStaticThing()
main02 ClassAB runSomething()
runStaticThing()
ClassC runSomething()
runStaticThing()

 

만약 어렵다면 아래 파일을 이용해서 사용하고 있는 IDE로 직접하면서 작성해보자!

( 아래 파일은 이클립스 기준이다. 만약 다른 IDE를 사용한다면 프로젝트를 만들고 main01, mian02 폴더만 복사해서 넣자! )

java_basic.zip
0.01MB

 

 

 

접근 제어자

접근제어자는 위의 그림처럼 절대 단순하지 않다.

평소에 습관적으로 private, public, 아무 표시도 않는 [default]만 사용했겠지만

어떤 멤버( 멤버 or 정적 )에 대한 접근인가에 따라 생각할 것이 많고 proteced 같은 경우에도 자신과 상속 관계에 있는 서브 클래스뿐만 아니라 같은 패키지라면 접근 가능하다.

 

 

 

반응형