: 클래스, 멤버변수, 메소드 선언부에 사용되어 부가적 의미 부여
: 외부 접근 제어 → 캡슐화(은닉)
cf) Encapsulation 캡슐화
: 객체가 가진 상태나 행위를 다른 이가 사용하거나 보지 못하도록 숨김
public
: 클래스 참조로 외부에서 직접 접근 가능private
: 클래스 외부에서의 접근 차단protected
: 같은 패키지 혹은 자식클래스에서만 접근 가능default
상태 : 같은 패키지에서만 접근 가능메소드 90% 이상
public
멤버변수 90% 이상private
→ getter, setter로 접근
getter, setter 자동생성 방법
Source메뉴 → "Generate Getters and Setters" → Select All → Generate
public class MyClass { // 클래스에는 public과 (default)만 사용
private int my; // 해당 클래스 블록{} 안에서만 사용
// getter
public int getMy() { // 클래스 외부에서 접근 가능
return my;
}
}
: 인스턴스 소속이 아닌 클래스의 고정 멤버
정적 변수 (= 클래스 변수 = 전역 변수)
클래스명.정적변수
로 접근 가능정적 메소드
클래스명.정적메소드()
로 접근 가능this
, super
키워드 사용 불가)
public class Main {
public static main(String[] args) {
// 객체 생성없이 사용
System.out.println(Holiday.jan);
Holiday.newYear();
}
}
class Holiday {
static int jan = 1; // 정적 변수
static void newYear() { // 정적 메소드
System.out.println("Happy New Year!");
}
}
: 불변의, 마지막의
: 자료형을 클래스 내부에서 지정하는 것이 아닌, 외부의 사용자에 의해 지정되도록 하는 것
→ 자료형의 매개변수(type parameter) 사용
class Box<T, P> { // Diamond(<>) 안에 있는 변수들 = type parameters
T temp;
P variable;
public Box(T temp, P variable) {
this.temp = temp;
this.variable = variable;
}
public T getTemp() {
return temp;
}
}
public class Main {
public static main(String[] args) {
// 객체 생성 시 자료형 지정
Box<String, Integer> box = new Box<String, Integer>("t", 0);
}
}