Java/Java

Java 08. 제한자( Modifier ) 와 식별자 ( Identifier )

shin96bc 2022. 3. 10. 09:30

(1) 제한자( Modifier )
     1) 클래스(인터페이스), 변수, 생성자, 메소드 앞에 붙어서 기능을 '제한'하는 예약어
     2) 접근제한자( Access Modifier )
          <1> 종류
               1> public : 접근 제한이 없다.
               2> protected : 같은 패키지의 자원 or 상속관계의 부모 자원에서만 접근이 가능하다.
               3> default : 같은 패키지의 자원에서만 접근이 가능하다.
               4> private : 클래스 안에서만 접근이 가능하다.

          <2> 붙는 특성
               1> 클래스나 인터페이스 앞의 접근제한자는 public 과 default 만 가능하다.
               2> public 클래스나 인터페이스의 이름은 파일이름과 같아야한다.
               3> 멤버, 생성자, 메소드는 제한없이 붙을 수 있다.
               4> 지역변수는 default 만 붙는다.

          <3> 범위
               1> 넓은 순위 : public > protected > default > private
               2> 강력 순위 : public < protected < default < private

     2) 소유제한자( static )
          <1> 붙으면 클래스 소유가 된다.
          <2> 멤버와 메소드에만 붙을 수 있다.
          <3> static 자원은 클래스이름으로 접근 가능하다.
          <4> static 메소드에서는 자원접근시 자신의 클래스 이름 생략 가능하다.
                ( 단, 다른 클래스에서는 클래스이름을 생략 불가 )
          <5> static 메소드내에서 객체자원을 접근시에는 객체를 생성시켜서 그 객체로 접근 한다.
          <6> static 자원은 메모리에 '1개'생성되어 모든 객체에게 '공유'된다.
   
     3) 수정제한자 ( final )
          <1> 붙으면 수정 못하게 한다.
          <2> 클래스, 변수(지역변수 포함), 메소드 앞에 붙을 수 있다.
          <3> 클래스 앞에 붙으면 자식을 객체를 못만든다.
          <4> 변수앞에 붙으면 초기값을 못바꾼다.
          <5> 메소드 앞에 붙으면 오버라이딩을 막는다.

     4) 추상제한자( abstract )
          <1> 붙으면 추상화 된다.
          <2> 클래스와 메소드 앞에서만 붙을 수 있다.
          <3> 하나 이상의 '추상메소드'를 가진 클래스는 반드시 '추상클래스'가 되어야 한다.
          <4> 추상클래스의 객체를 만들고, 사용( 멤버/메소드 )하자.

     5) 기타제한자 
          <1> synchronized( 쓰레드 ) , transient( 보안 ) , native( OS자원 ) 


(2) 식별자 ( Identifier )
     1) 프로그래머가 임의로 설정하는 패키지, 클래스, 변수, 생성자, 메소드 '이름' 을 말한다.
     2) 규칙
          <1> 숫자가 맨 앞에 나올 수 없다.
          <2> 특수문자는 _와 $만 가능하다. ( 맨 앞에 나와도 됨 )
          <3> 길이의 제약은 없다.

     3) 관례
          <1> 클래스와 인터페이스의 첫문자는 대문자로 하자.
          <2> 상수는 전체 문자를 대문자로 하자.
          <3> 패키지, 변수, 메소드 이름은 첫문자를 소문자로 시작하게 하자.
          <4> 2개 이상의 단어의 조합은 다음 단어의 첫문자를 '대문자'로 하거나 ( 상수일 경우 )'_'로 연결하자.
          <5> _와 $는 자제하자.
          <6> 의미있는 단어를 사용하자.

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

Java 10. 내부클래스 ( Inner Class )  (0) 2022.03.10
Java 09. this 와 super  (0) 2022.03.10
Java 07. 예외 처리  (0) 2022.03.09
Java 06. OOP( Object Oriented Programming) 특성  (0) 2022.03.09
Java 05. 컬렉션 ( Collection )  (0) 2022.03.09