7.7.1 접근제어자 및 제어자
- 접근 제어자 : public, protected, default, private
- 제어자 : static, final, abstract, native, transient, synchronized, volatile, strictfp
- 하나의 대상에 여러 제어자 조합하여 사용 가능
- 접근 제어자는 하나만 가능
7.1.2 static
- 클래스의, 공통적인
- 인스턴스에 관계없이 항상 같은 값
- 인스턴스를 생성하지 않고 사용가능
- 멤버변수, 메서드, 초기화블럭에서 사용 가능
7.1.3 final
- 변경될 수 없는
- 상수로 선언할 때 사용
- 클래스, 메서드, 멤버변수, 지역변수에서 사용 가능
- 인스턴스변수를 활용해 final을 초기화 가능(매개변수로부터 제공받음)
class Card{
final int NUMBER;
Card(int num){
this.NUMBER = num;
}
}
7.1.4 abstract
- 추상의, 미완성의
- 추상 메서드를 선언하면 구변부 정의 불가
- 오버라이딩을 통해 자식이 추상 메서드의 구현부 정의
abstract class Parent{
abstract void move();
}
class Child extends Parent{
void move(){}
}
7.1.5 접근제어자(access modier)
- public : 전체에서 사용 가능
- default : 같은 패키지에서 사용 가능
- protected : 같은 패키지 및 자손 클래스에서 사용 가능
- private : 같은 클래스에서만 사용 가능
- 접근제어자를 사용하여 외부로부터 보호 및 내부 숨김이 가능해 캡슐화 가능
- 멤버변수를 private로 선언하고 getter, setter를 사용하여 변수에 직접접근 금지
private int a;
int getterA(){
return a;
}
void setterA(int a){
this.a = a;
}
7.1.6 생성자의 접근 제어자
- 생성자에 private를 선언하면 외부에서 생성자에 접근할 수 없므로 인스턴스를 생성할 수 없다.
- public메소드를 제공하여 외부에서 인스턴스를 사용할 수 있게 할 수 있음. 단, public static이어야 한다.
class Singleton{
private static Singleton s = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return s;
}
}
7.1.7 제어자의 조합
- 클래스 : public ,default, protected, abstract
- 메서드 : 모든 접근 제어자, final, abstract, static
- 멤버변수 : 모든 접근 제어자, final, static
- 지역변수 : final
- 주의사항
- 메서드에 static과 abstract를 함께 사용할 수 없다.
- 클래스에 abstract와 final을 동시에 사용할 수 없다.
- abstract메서드의 접근 제어자가 private일 수 없다.
- 메서드에 private과 final을 같이 사용할 필요는 없다.
'자바의 정석 정리' 카테고리의 다른 글
자바의 정석 - 7.9 추상 클래스 (0) | 2022.06.13 |
---|---|
자바의 정석 - 7.8 다형성 (0) | 2022.06.13 |
자바의 정석 - 7.6 Import (0) | 2022.06.13 |
자바의 정석 - 7.5 패키지 (0) | 2022.06.13 |
자바의 정석 - 7.4 오버라이딩 (0) | 2022.06.13 |