반응형

다양한 접근 제한자

접근 제한자는 다양한 클래스간에 데이터를 공유하는 과정에서 접근할 수 있는 영역이 어디까지인지를 설정하기 위해 사용됩니다.

 

적절한 접근제한은 보안에 있어서 매우 효과적인 역할을 수행합니다.

 

접근제한자의 종류와 영역은 아래와 같습니다.

 

접근 제한자 적용시킬 수 있는 대상 적용범위
public 필드, 생성자, 메소드, 클래스 모든 접근 가능
protected 필드, 생성자, 메소드 동일 패키지 내 객체와 상속 관계의 객체
default <입력 생략시 default> 필드, 생성자, 메소드, 클래스 동일 패키지 내 객체
private 필드, 생성자, 메소드 현재 객체 내에서만

 

 

반응형
반응형

다른 패키지의 클래스를 호출하기

유사한 역할을 갖고있는 녀석들을 묶어 우리는 하나의 '패키지'로 관리하는것은 아실겁니다.

 

WorkSpace에서 확인해보면, 실제로도 별도의 폴더를 갖는 것을 볼 수 있습니다.

 

만약 위와같은 형태로 구조가 되어있고, LangMain.java에서 sample.java에 존재하는 클래스를 하나 갖고와 사용하려고 한다고 가정하겠습니다.

 

먼저 sample.java의 코드입니다.

 

간단하게 Sample이라는 클래스에 data라는 변수가 존재하는 것을 볼 수 있습니다.

 

이녀석을 LangMain.java에서 불러오기 위해서는 [ import ]를 통해 먼저 호출을 해줘야합니다.

 

import를 통해 호출하는 방식은 아래와 같습니다.

 

  • 특정 패키지의 하나의 클래스 호출하기

특정 클래스만 호출하기

 

  • 특정 패키지의 모든 클래스 호출하기

 

모든을 의미하는 별(*)을 이용하면 특정 패키지 이하의 모든 클래스를 호출합니다.

 

이렇게 호출된 클래스는 해당 코드에 존재하는 클래스와 동일한 방식으로 사용할 수 있습니다.

 

 

다만, 만약여러개의 클래스가 호출된 상태에서 클래스의 이름이 동일할 경우 import에서 단일 클래스를 호출했던것과 마찬가지로 패키지명을 포함한 모든 경로를 적어줘야합니다.

반응형
반응형

1. Final 필드

Java에서는 Final이라는 통해 한번 정의된 변수의 값이 수정되지 못하도록 만들 수 있습니다.

 

class Math{

    final pi = 3.14;

    //final [타입] [필드명];

}

 

위와같은 형태로 만들어 줄 수 있습니다. 만약 클래스 내에서 필드(변수)를 초기화하지 않았다면, 단 한번 변수를 초기화 할 수 있습니다.

 

일반적으로 이와같은 녀석을 '상수'라고 부르는 경우가 종종있습니다.

 

왜냐하면, 수정이 불가능하기 때문이죠.

 

하지만, C언어에서 '상수'를 사용해본 경험이 있으신 분이라면, 조금 이상하다는 느낌을 받을 수 있습니다.

 

왜냐하면, 일반적으로 '상수'라는 녀석은 '전역변수'처럼 사용되기 때문입니다.

 

 

즉, 위와같이 클래스 내에서 final이라는 녀석을 통해 선언된 필드의 값은 클래스의 객체별로 서로 다른 값을 갖을 수 있다는 문제가 있습니다.

 

 

 

2. Static Final

위의 문제점을 해결하기 위하여 앞에 Static이라는 녀석을 붙여줍니다.

 

이전장에서, 그리고 처음 [JVM 메모리 관리]부분에서 언급했던것처럼 static이라는 녀석은 [메소드 영역]에서 관리되기 때문에 전역변수처럼 사용됩니다.

 

즉, static final로 선언된 값은 코드 전역에서 불편의 값을 갖는 필드, 즉 '상수'라고 불릴만한 자격을 갖게됩니다.

 

 

 

상수를 선언할 때에는 항상 

 

static final 필드 (=초기값);

 

위와같은 형태로 만들어줄 것! 꼭 기억합시다.

반응형

+ Recent posts