-
[JAVA 24] 자바 제한자 ( Modifier ) 접근제한자 / 소유제한자 / 수정제한자 / 추상제한자 / 기타제한자Language/Java 2018. 2. 13. 18:53반응형
■ 제한자 ( Modifier )
1. 클래스 , 인터페이스 , 변수 , 메소드 , 생성자
앞에 붙어서 그 기능을 제한하는 Reserved Word ( 예약어 )
2. 종류 및 특징
1) 접근 제한자 ( Access Modifier )
(1) public
접근제한이 없다.
(2) protected
같은 패키지 안
다른 패키지 의 부모의 자원
(3) default
같은 패키지 안
(4) private
자신의 클래스 안
cf 1) 범위가 넓은 순서
public > protected > default > private
cf 2) 접근제한이 강력한 순서
public < protected < default < private
3) class 앞에는 public 과 default 만 가능하다.
2) 소유 제한자 ( static )
(1) static 이 붙으면 클래스 소유 , 붙지 않으면 객체 소유가 된다.
(2) 특징
① Class ( 클래스 ) 와 Constructor ( 생성자 ) 앞에는 붙지 못한다.
Memeber Variable ( 멤버 변수 ) 와 Method ( 메소드 ) 앞에만 붙을 수 있다.
② static method 내에서는 객체 생성 없이 static 자원을 호출 가능하다.
해당 자원에 클래스 이름이 생략이 된다.
③ Local Variable ( 지역변수 ) 에는 static 이 붙을수 없다.
오직 Member Variable ( 멤버 변수 ) 만이 소유의 대상이 된다.
④ 다른 클래스에서 static 자원을 호출할 때에는 클래스 이름을 생략할 수 없다.
⑤ static 자원은 메모리에 오직 1개 생성이 된다.
해당 클래스의 모든 객체에서 공유 되어진다.
⑥ static 메소드에서는 this 와 super 을/를 사용할 수 없다.
3) 수정 제한자 ( final )
(1) final 이 붙으면 상수가 되기 때문에 수정을 할 수 가 없다.
(2) 특징
① Class ( 클래스 ) , Variable ( 변수 ) , Method ( 메소드 ) 앞에 붙을 수 있다.
Constructor ( 생성자 ) 는/은 왜 안될까? ( Constructor 는 Overriding 이 되지 않는다. )
② Class ( 클래스 ) 앞에 붙으면 자식을 못 낳는다. 즉 , 마지막 자식이 된다.
Variable ( 변수 ) 앞에 붙으면 상수가 된다. 즉 , 초기값을 바꿀수가 없다.
Method ( 메소드 ) 앞에 붙으면 Overriding ( 오버라이딩 / 재정의 ) 가 되지 않는다.
④ static final member variable 이 많은 이유가 있다.
생각해봅시다.
4) 추상 제한자 ( abstract )
(1) abstract 가 붙으면 추상화가 된다.
(2) 특징
① Class 또는 method 앞에만 붙을 수 있다.
② Abstract 가 붙은 클래스를 ' 추상 클래스 ' 라고 한다.
Abstract 가 붙은 메소드를 ' 추상 메서드 ' 라고 한다.
③ 하나 이상의 추상 메소드가 있다면 클래스는 반드시 추상 클래스가 되어야 한다.
④ 추상 클래스에는 일반 메소드도 포함이 가능하다.
⑤ Constructor ( 생성자 ) 앞에는 붙을 수 없다.
Constructor ( 생성자 ) 는/은 왜 안될까? ( Constructor 는 Overriding 이 되지 않는다. )
⑥ 추상 클래스 객체는 완변한 자식 클래스를 만들어 그 객체를 형변환 하여 생성한다.
⑦ static abstract 를 함께 사용할 수 없다.
5) 기타 제한자
(1) sychronized ( 싱크로나이즈드 / 쓰레드 )
(2) transient ( 보안 )
(3) native ( System 자원 )
반응형'Language > Java' 카테고리의 다른 글
[JAVA 26] 자바 ② 소유 제한자 ( static ) (0) 2018.02.14 [JAVA 25] 자바 ① 접근 제한자 ( Access Modifier ) (public / protected / default / private) (0) 2018.02.13 [JAVA 23] 자바 super ( 슈퍼 ) (0) 2018.02.13 [JAVA 22] 자바 this ( 디스 ) (0) 2018.02.13 [JAVA 21] 자바 가변 배열 ( Map / 맵 ) ③ Map (0) 2018.02.12