※ 이 글은 자바의정석을 참조하였다.
1. 제어자
- 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다.
- 제어자는 크게 접근제어자와 그외의 제어자로 나뉜다.
- 하나의 대상에 여러개의 제어자를 조합해서 사용할 수 있으나 접근제어자는 단 하나만 사용할 수 있다.
- 접근제어자 : public, protected, default, private
- 그 외 : static, final, abstact, native 등
2. static
제어자 | 대상 | 의미 |
static | 멤버변수 | - 모든 인스턴스에 공통적으로 사용되는 클래스변수가 된다. - 클래스변수는 인스턴스를 생성하지않고도 사용 가능하다. - 클래스가 메모리에 로드될 때 생성된다. |
메서드 | - 인스턴스를 생성하지않고도 호출이 가능한 static 메서드가 된다. - static메서드 내에서는 인스턴스멤버들을 직접 사용할 수 없다. |
3. final
제어자 | 대상 | 의미 |
final | 클래스 | 변경될 수 없는 클래스,확장될수 없는 클래스가 된다. 그래서 final로 지정된 클래스는 다른클래스의 조상이 될 수 없다. |
메서드 | 변경될 수 없는 메서드, final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다. | |
멤버변수 | 변수 앞에 final이 붙으면 값을 변경할 수 없는 상수가 된다. | |
지역변수 | 변수 앞에 final이 붙으면 값을 변경할 수 없는 상수가 된다. |
4. abstract
제어자 | 대상 | 의미 |
abstact | 클래스 | 클래스 내에 추상메서드가 선언되어 있음을 의미한다. |
메서드 | 선언부만 작성하고 구현부는 작성하지 않은 추상메서드임을 알린다. |
5. 접근제어자
- 접근제어자가 사용될 수 있는곳 : 클래스, 멤머변수, 메서드, 생성자
- private : 같은 클래스내에서만 접근이 가능하다.
- default - 같은 패키지내에서만 접근이 가능하다.
- protected : 같은 패키지내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다.
- public : 접근 제한이 전혀 없다.
6. 다형성
- 여러가지 형태를 가질 수 있는 능력
- 하나의 참조변수로 여러타입의 객체를 참조 할 수 있는것
즉 조상타입의 참조변수로 자손타입의 객체를 다룰 수 있는 것이 다형성 - 조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있지만, 반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수는 없다.
7. 참조변수의 형변환
- 서로 상속관계에 있는 타입간의 형변환만 가능하다.
- 자손 타입에서 조상타입으로 형변환 하는 경우, 형변환 생략 가능
자손타입 -> 조상타입 : 형변환 생략 가능 자손타입 <- 조상타입 : 형변환 생략 불가
8. instanceof연산자
- 참조변수가 참조하는 인스턴스의 실제타입을 체크하는데 사용.
- instanceof의 연산결과가 true이면 해당타입으로 형변환이 가능하다.
9. 매개변수의 다형성
- 참조형 매개변수는 메서드 호출시, 자신의 같은 타입 또는 자손타입의 인스턴스를 넘겨 줄 수 있다.