패키지와 접근 제어(접근제한자)

|

################ 패키지 ################

규모가 큰 자바 프로그램을 작성하다 보면 클래스와 인터페이스가 많아진다. 이를 효율적으로 분류하고 관리하기 위하여 연관성 있는 클래스와 인터페이스를 모아둔 것이 바로 패키지.

 

<예시>

package iotest;    클래스와 인터페이스를 분류별로 모아 관리하는 iotest라는 패키지를 만든다

class StuInfo{

    ...

}

 

패키지를 통해 이름의 중복을 해결

 

'배우고 익히고 잊어버려라'

 

패키지는 일종의 디렉토리 개념

 

클래스를 로드한다는 것은 같은 패키지안에 있는 클래스만 가능해서 이때는 import를 활용해서 다른 패키지에 속한 클래스를 불러올 수 있음.

 

<예시>

import java.io.*;    java.io 패키지의 모든 클래스를 여기서도 사용한다. *는 '모든' (와일드카드)

class StuInfo{

    ...

}

 

############### 손 컴파일 ##################

개발도구 없이 코딩하는 경우는 거의 없지만, 언젠가는 알고 있어야 하는 부분.

 

############### 로드된 패키지 파일들의 중복의 회피 ##################

 

################ 접근 제어자(접근 제한자) ################

어떤 클래스를 다른 패키지의 클래스가 상속하지 못하게 하는 등 경우에 따라 클래스나 인터페이스를 사용하는 것을 제한할 필요가 있다.

 

접근 제어자(제한자): public, protected, private (외부;다른 클래스 의 접근을 제한함) 


public: 어디서든 접근 가능(다른 패키지의 클래스도 접근가능)

protected: 같은 패키지 내부에서만 접근 가능. 상속 관계에 있다면 서로 다른 패키지에 있는 클래스의 접근도 허용한다.

default : 접근 제어 지시자가 없는 경우, 접근 제어자가 없는 메소드는 같은 패키지에 있고 상속 관계에 있는 메소드에 대해서만 접근을 허용
private: 외부면 어디서든 접근 불가. 같은 클래스 내부에서만 사용이 가능. nested class(클래스 안에 클래스가 정의된 경우에만 만들수있음)

 

 

접근 제어자를 사용하는 이유 : 사용자가 접근하면 안되거나 접근 할 필요가 없는 맴버에 대한 접근을 규제할 수 있게 되었다. 어떤 맴버에 대한 접근을 허용할 것인가를 작업자의 판단에 달렸다.

 

하나의 소스 코드에는 하나의 public 클래스가 존재 할 수 있다는 의미

 

public 접근 제어자 사용시 주의할 점

- 소스 코드 파일명과 public이 붙은 클래스명은 동일해야 한다.

- main 함수는 public이 붙은 클래스 안에 위치해야 한다.

 

'Java' 카테고리의 다른 글

여러가지 수식자(final, static, abstract)  (0) 2019.06.07
abstract  (0) 2019.06.07
API와 API 문서 보는 법  (0) 2019.06.06
클래스 패스  (0) 2019.05.29
오버라이딩(Overriding) 과 오버로딩(Overloading)  (0) 2019.05.23
And