반응형
인스턴스 멤버
- 인스턴스 필드, 인스턴스 메소드
- 객체마다 가지고 있는 멤버, 객체를 생성한 후 사용 가능
- 인스턴스 메소드는 객체 내부에 존재하지 않고 메소드 영역에 저장되고 공유됨, 인스턴스 메소드라 불리는 이유는 메모리 블록 내부의 인스턴스 필드 등이 사용되는 경우 객체 없이 사용이 불가하기 때문
this 키워드
- 객체 내부에서 인스턴스 멤버에 접근하기 위해 사용
- 생성자와 메소드의 매개 변수 이름이 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할 때 사용
정적 멤버
- 정적 필드, 정적 메소드
- 클래스에 고정된 멤버, 객체를 생성하지 않고 사용 가능
- 정적 멤버는 메소드 영역에 저장됨
- 개체마다 가지고 있을 필요가 없는 공용 데이터라면 정적 필드로 선언하는 것이 좋음
- static 키워드를 붙이면 됨
정적 메소드 사용 시 주의할 점
- 객체 없이도 메소드가 실행되어야 하기 때문에 인스턴스 멤버와 관련된 것은 사용불가
도트(.) 연산자
- 클래스 이름과 함께 도트(.) 연산자로 접근 (클래스명.필드;)
final 필드
- final이 선언되면 저장된 초기값을 변경할 수없음
- 초기값 변경 방법
- 필드 선언 시에 초기값을 주는 방법
- 생성자에서 주는 방법
상수
- 불변의 값을 저장하는 필드
- 객체마다 저장할 필요가 없음
- 한 개의 값만 갖기 때문에 static이면서 final인 특성을 가져야 함
- 상수 이름은 대문자와 언더바(_)로 작성함
- 정적 필드이므로 클래스로 접근해서 읽음
패키지
- 디렉토리와 같은 역할을 하지만 디렉토리만을 의미하지 않고, 클래스의 일부분으로써 클래스를 식별하는 용도로 사용
- 상위 패키지와 하위 패키지를 도트(.)로 구분
- 패키지 이름은 모두 소문자로 작성하는 것이 관례
- 패키지 이름이 서로 중복되지 않도록 회사 도메인 이름의 역순으로 작성하고, 마지막에 프로젝트 이름을 붙여주는 것이 일반적
import문
- 다른 패키지의 클래스를 사용할 때 import문 이용
- 클래스의 이름이 동일할 때 어떤 패키지의 클래스인지를 명시해야 할 때 사용
- 동일한 패키지에 포함된 다수의 클래스를 사용해야 한다면 클래스 이름을 생략하고 *를 사용할 수 있음
접근 제한자
- 클래스의 접근 제한 : public, (default)
- 생성자의 접근 제한 : 모두 사용 가능
- 필드와 메소드의 접근 제한 : 모두 사용 가능
접근제한자 | 제한 범위 |
public ↕ | 없음 |
protected ┐ | 같은 패키지이거나, 자식 클래스만 사용 가능 |
(default) ↔ | 같은 패키지 |
private ㆍ | 객체 내부 |
같은 패키지 : 기준 패키지 기준으로 상위 패키지는 같은 패키지, 하위패키지는 포함X → 하위패키지 기준 상위패키지는 같은 패키지에 포함되나, 상위패키지 기준 하위패키지는 같은 패키지로 포함되지 않기 때문
Getter와 Setter
- 객체의 무결성을 보존하기 위해 사용
- Setter 메소드 : 데이터를 검증하여 유효한 값만 필드에 저장하기 위한 메소드
- Getter 메소드 : 필드 값을 가공한 후 외부로 전달하기 위한 메소드
싱글톤 패턴
- 단 하나의 객체만 만들도록 보장해야 하는 경우
- 외부에서 접근할 수 없게 private 접근 제한자를 붙여 자신의 타입인 정적 필드를 하나 선언
- 선언함과 동시에 자신의 객체를 생성해 초기화시킴 (외부에서 객체 생성을할 수 없기 때문에 내부에 미리 객체 생성)
- 클래스 외부에서 객체 생성을 할 수 없게 해야 하므로 생성자 앞에 private 접근 제한자를 사용함
- 대신 메소드는 외부에서 호출이 가능하도록 정적 메소드인 getInstance()를 선언하고 정적 필드에서 참조하고 있는 자신의 객체를 리턴해줌
public class 클래스명 {
//정적필드
private static 클래스명 singleton = new 클래스명();
//생성자
private 클래스명() {}
//정적 메소드
static 클래스명 getInstance() {
return singleton;
}
}
- 외부에서 객체를 얻는 유일한 방법은 getInstance() 메소드를 호출하는 방법
//호출방법
싱글톤클래스명 변수명1 = 싱글톤클래스명.getInstance();
반응형
댓글