Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]

class 앞에 public < 접근제한자 >

2010. 3. 25. 11:38programming/java

728x90

class 앞에 붙은 것을 한정자라고 합니다. public, final, abstract 가 붙을 수 있습니다.
생략할 경우 같은 패키지내의 클래스만 접근이 가능합니다.

만일 java.lang.Integer 라는 객체가 public이 생략되어 있었다면
java.lang 패키지가 아닌 경우 Integer 객체를 사용할 수 없다는 말입니다.

public은 모든 클래스에서 불러다 쓸 수 있게 하고,
final 클래스는 서브클래스를 가질 수 없습니다.
abstract는 추상클래스 만들 때 씁니다.

그리고 한 파일에 여러 클래스를 선언할 경우 public 클래스는 하나만 있어야 됩니다.
또한, main 메서드가 있는 클래스는 무조건 public이 되어야 하지만
여기에서는 예외로 public을 생략할 경우 public으로 인식됩니다

우선 한 class 내에 여러 클래스를 가지고 있는것을 중첩클래스라고 합니다.

public class A{
    public class B{
   }
    public class C{
   }
 public static void main(String[] args){
     }
}

또한 public 이라는 것은 접근타입입니다.
class앞에 아무것도 써주지 않게 되면 컴파일 할때 java에서 자동적으로 붙여주게 됩니다.
쓰셔도 되고 안쓰셔도 되는데요 왠만하면 쓰시는 습관을 기르시는 게 좋습니다.
붙혀도 그만 안붙혀도 그만이라고들 생각하시는대 반드시 붙혀야 합니다.
그런대 붙히지 않아도 에러는 발생하지 않습니다.
왜냐하면 class에 기본으로  설정된 접근 속성이 public 이기 때문입니다.
그러므로 보안 생각 하신다면 붙히는 것이 좋습니다.

물론 한 파일안엔 여러개의 public이 올수도 있고 클래스에다만 붙일수 있는게 아니라
메소드 등에도 붙일 수 있습니다.

자바에서는 다음과 같은 네 가지 종류의 접근제한자를 제공해 주고 있습니다.

- public : 다른 어떤 객체(클래스)에서도 액세스가 가능한(사용할 수 있는) 접근 권한입니다. 이 접근 권한은 다른 코드에서 사용할 수 있는 클래스, 상수(static final 변수), 메소드(세터나 게터등), 그리고 대부분의 생성자는 public으로 지정하면 됩니다.

 

- private : 다른 어떤 객체에서도 액세스가 불가능한 접근 권한입니다. 이 접근 권한으로 지정된 변수 또는 메소드를 다른 객체에서 참조하거나 사용하는 것이 불가능하고, 자신의 클래스 내에 있는 메소드에서만 참조하거나 사용할 수 있습니다. 이 접근 권한은 거의 모든 인스턴스 변수, 그리고 외부에서 호출하면 안되는 메소드(public으로 지정된 메소드에서 사용하기 위한 용도로 만들어진 메소드)는 private로 지정하면 됩니다.

 

- protected : 자바에서 정의된 클래스들은 기본적으로 하나의 그룹 단위 또는 묶음단위로써 유지되는데 이를 패키지라 합니다. 다시 말해서 패키지는 클래스들의 그룹 또는 큰 단위의 모듈이라 볼 수 있습니다. protected 접근 권한으로 지정하면 하위 클래스 도는 같은 패키지 내의 클래스에서 액세스가 가능합니다.

 

- 생략(friendly) : 접근 권한을 지정하지 않는 경우로서, 이러한 접근 권한을 생략(friendly) 권한이라 합니다. 같은 패키지 내에 있는 모든 클래스에서 액세스가 가능하고 protected 접근 권한과는 달리 패키지가 다른 하위 클래스에서는 접근할 수 없습니다.

 

지금까지 설명한 접근제한자를 표로 정리하면 다음과 같습니다.

 접근제한자

 같은 클래스

 같은 패키지

 하위 클래스

 전체(Universe)

 public

Yes

 Yes

 Yes

 Yes

 protected

 Yes

 Yes

 Yes

 

 default(friendly)

 Yes

 Yes

 

 

 private

 Yes

 

 

 

 

728x90

'programming > java' 카테고리의 다른 글

메모장으로 아스키 코드값 알아내기!!  (0) 2010.04.07
[Java] 형변환 ( int, double, long ... <-> String )  (0) 2010.04.06
변수의 초기화  (0) 2010.03.25
자바(Java Programming Language)  (0) 2010.03.23
자바 시작하기  (0) 2010.03.19