밍키의 마법세상

JAVA (5) - 지시자, 캡슐화 본문

Programming/Java

JAVA (5) - 지시자, 캡슐화

요술공쥬 2019. 6. 8. 22:18

접근제어 지시자를 이용하여 정보를 은닉하고 객체지향언어 3요소중 하나인 

"캡슐화"에 대해 알아보자!

 

접근제어 지시자란?

--> private, default, protected, public으로 나뉘는데

지시자 접근 허용범위
클래스 내부 해당 패키지 내부 상속받은 클래스 그 이외의 부분
private 가능 불가능 불가능 불가능
default 가능 가능 불가능 불가능
protected 가능 가능 가능 불가능
public 가능 가능 가능 가능

default 지시자

--> 같은 클래스, 같은 패키지 내부에서 사용이 가능하다.

 

이렇게 실행을 하게 되면 f.int_private = 3;에서 오류가 나게 된다. 

그 이유는 privat 의 접근범위는 클래스 내부에서만 가능하지만 Func클래스를 벗어난 Test2클래스에선 접근이 불가능하기 때문이다.

 

 

private은 왜 있을까?

--> 바로 정보은닉을 위해 사용된다.

      외부에서의 해당 값 접근이 불가능하다는 것을 의미한다.

      프로그램을 같이 만들때 외부에서 접근하지 못하도록 private으로 선언해 접근을 방지하기 위해 사용한다.

--> 접근이 아예 불가능한것은 아니다! 값에 접근하는 메소드를 만들어서 사용하면 된다!

 

 

 

그럼 protected는 어떨까?

--> protected는 조금 에매하다. 굳이? protected를 쓸바엔 public이나 default를 쓰는게 좋다.

 

이제 public class 와 default class에 대해 얘기해보자

우리가 클래스 공부를 하며 배웠던 말이 있다. 

--> 자바 클래스파일을 생성할시에 입력했던 이름과 같은 class가 public형으로 생성된다.

 

그러면 왜 public형으로 생성될까?

--> 바로 외부에서의 접근을 위해 public으로 생성된다.

     자바뿐만 아니라 "객체지향 언어"에서의 장점인데, "분할 프로그래밍"이 편하다

     즉 한 프로그램을 만들기 위해 각 기능을 분할하여 만들 수 있다. 

     그래서 각 기능을 외부 패키지나 클래스에서 사용할 수 있게 하기위해서 public으로 선언한다.

한가지 알아두면 좋을점은 속해있는 클래스의 범위에 한정되서 생성자의 범위를 결정할 수 있다는 것이다.

아래에 예시가 있다.

 

 

그럼 캡슐화에 대해 알아보자!

--> 간단히 말해 데이터와 그 데이터를 다루는 메소드를 하나로 묶은 것을 말한다. 

      이렇게 묶어서 사용할시 직접 데이터에 접근할수 없고 접근하는 메소드를 이용하기 때문에 정보은닉이 가능하다.

      또한 소스가 간소화되고 재사용이 쉽다.

위와 같은 코드를

 

이렇게 캡슐화 시킬 수 있다. 

물론 코드의 길이는 더 길어졌지만 TestClass의 코드가 더 간결해졌고, 클래서 하나를 더 추가하여 은닉성이 더 보강되었다.

반응형

'Programming > Java' 카테고리의 다른 글

java 사다리 타기 코드  (0) 2019.06.16
JAVA (6) - static  (0) 2019.06.08
JAVA (4) - class  (0) 2019.06.08
JAVA (3) - 연산자  (0) 2019.06.08
JAVA (2) - 자료형  (0) 2019.06.08
Comments