2018년 9월 6일 목요일

Java 접근제어자

이전시간에는 오버로딩과 오버라이딩에대해서 알아보았다.

우리는 지금까지 클래스를 생성하는동안에 무의식적으로 접근제어자를 사용하고있었다.
바로 클래스 앞에 혹은 클래스 멤버변수의 앞에 사용된 public 키워드이다.

이 접근제어자의 사용은 프로그램을 구현시(클래스 생성시) 다음과 같은 목적을 둔다.
1) 다른 패키지의 클래스들과 중복되지 않도록 막기위해 사용
2) 하나의 클래스 내에서만 접근이 가능(상속받은 클래스에서도 접근할 수 없도록)
3) 혹은 상속받은 클래스만 접근이 가능
4) 다른패키지의 클래스는 접근못하게하려고
5) 다른패키지의 클래스에서는 접근할수없으나 만약 상속받은 클래스라면 접근가능
6) 그외에 등

우리는 자바프로그래밍 언어를 이용해서 프로그램을 구현시 하나의 클래스라는 파일을 만들것이다. 그다음 이 클래스를 이용하기위해 다른파일 혹은 현재클래스파일에 main을 만들어서 실행시킬 것이다. 이때 이 클래스의 접근에 제한을 두는것이다.

예를들어 살펴보자

 하나의 패키지에서 클래스 사용시
Calculator.class(Calculator클래스 생성) -> CalculatorMain.class(Main클래스 생성) -> 컴파일

 다른 패키지에서 클래스 사용시
import Calculator.class경로.Calculator -> Calculator.class(Calculator클래스 생성) -> CalculatorMain.class(Main클래스 생성) -> 컴파일

이 외에도 다양한 방식으로 클래스를 불러와서 컴파일할텐데, 클래스의 접근제어자를 염두하여 사용해야 한다.  왜냐? 접근제어자에 따라 컴파일을 가능하게 해줄수있고 불가능하게 해줄 수 도 있다. 

이 접근제어자는 프로그래머의 구현 목적에 따라서 알맞게 지정해주면 된다. 솔직히 아직까지는 어떨때 써야할지 감이안올수도있지만, 프로그램의 규모가 커질수록 수 많은 클래스들 혹은 그안의 멤버변수, 메소드 등 이 접근제어자를 잘 활용해야 효율적인 프로그램이 완성되는것이다.

접근제어자의 종류
- public : 말 그대로 공공의 멤버라고 할 수 있다. 누구나 어느곳에서나 접근이 가능하다.
- protected : 상속만 받는다면, 누구나 어느곳에서나 접근할 수 있다.
- default : 접근제어자 지정이 생략된경우 자동으로 지정된다. protected와 비슷하나 약간의 제한적인 버전이다. 같은패키지의 내부에서만 접근이 가능하다. 즉, 상속받더라도 다른패키지에서는 접근이 불가능하다. 
- private : 같은 클래스에서만(한곳에서만) 상속, 같은패키지더라도 같은 클래스가 아니면 사용불가능함!

(위의 설명에서 어느곳에서라는 것은 아무 패키지에서 import되었을때의 이야기이다.)

이제 접근제어자를 마무리하며, 다음에는 클래스의 다형성에 대해서 살펴보자



댓글 없음:

댓글 쓰기

[Java] N-I/O(Non-Blocking) 파일 읽기 쓰기 - GatheringByteChannel, ScatteringByteChannel, ByteBuffer 사용.

우리는 지금까지 다음과 같이 살펴보았다. 1.  InputStream / OutputStream : 입, 출력 스트림을 바이트로 처리하여 읽기, 쓰기. 2.  FileInputStream / FileOutputStream : 입, 출력 스트림을 ...