출처 - Java의 정석 기초편 (남궁 성)
1. 제어자
- 클래스와 클래스의 멤버(변수, 메서드)에 부가적인 의미 부여
- 접근 제어자: public, protected, (default), private
- 그 외: static, final, abstract 등
- 하나의 대상에 여러 제어자 사용가능 (접근 제어자는 하나만 선택)
2. static
- 클래스의, 공통적인
- 사용: 멤버변수, 메서드, 초기화 블럭
- 인스턴스 멤버를 사용하지 않는 메서드는 static 붙여, 인스턴스를 생성하지 않고도 호출 가능하도록 고려
class StaticTest {
static int width = 200; // 클래스 변수(static변수)
static int height = 120;
static { // 클래스 초기화 블럭
// static 변수의 복잡한 초기화 수행
}
static int max(int a, int b) { // 클래스 메서드(static메서드)
return a > b ? a : b;
}
}
3. final
- 마지막의, 변경될 수 없는
- 사용: 클래스(상속 불가), 메서드(오버라이딩 불가), 멤버변수(상수), 지역변수(상수)
final class FinalTest { // 조상이 될 수 없는 클래스
final int MAX_SIZE = 10; // 값을 변경할 수 없는 멤버변수
final noid getMaxSize() { // 오버라이딩할 수 없는 메서드
final int LV = MAX_SIZE; // 값을 변경할 수 없는 지역변수
return MAX_SIZE;
}
}
4. abstract
- 추상의, 미완성의
- 사용: 클래스, 메서드
- 추상 클래스는 미완성 설계도이므로 상속 받아서 완전한 클래스를 만든 후 인스턴스 생성가능
abstract class AbstractTest { // 추상 클래스(추상 메서드 존재)
abstract void move(); // 추상 메서드(선언부만 작성, 구현부가 없는 메서드)
}
AbstractTest a = new AbstractTest(); // 에러. 추상 클래스 인스턴스 생성불가
5. 접근 제어자(access modifier)
- public: 접근제한없음
- protected: 같은 패키지+자손
- (default): 같은 패키지
- private: 같은 클래스
- 사용: 클래스, 멤버변수, 메서드, 생성자
- 캡슐화: 외부로부터 데이터 보호(데이터 감추기), 내부적으로만 사용되는 부분을 감추기 위해(복잡성 감소)
'Java' 카테고리의 다른 글
추상 클래스(abstract class), 인터페이스(interface) (1) | 2022.10.03 |
---|---|
다형성(polymorphism) (0) | 2022.10.03 |
super, super(), package, import문 (1) | 2022.09.30 |
상속, 포함, Object클래스, 오버라이딩 (0) | 2022.09.28 |
메서드, return문, 호출스택, 매개변수, 생성자 (0) | 2022.09.25 |