본문 바로가기

reviews/이것이 자바다

6. 클래스 (2)

6.9 인스턴스 멤버와 this

인스턴스 멤버

인스턴스 멤버를 생성한 후 사용할 수 있는 필드와 메소드

인스턴스 멤버와 메모리

  • 인스턴스 필드는 객체마다 별도
  • 인스턴스 메소드는 객체마다 존재하지 않고 메소드 영역에 저장되고 공유됨
  • 개구리책에서 본 내용이랑 다른거같아서 이해가 안됨.. 나중에 개구리 책을 다시 읽어보면서 정리 할 것 *

6.10 정적 멤버와 static

정적 멤버

정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드

static 타입 필드 [= 초기값];
static 리턴타입 메소드(매개변수) { }

정적 필드의 초기화

  • 필드 선언과 동시에 부여
  • 계산이 필요한 경우 정적 블록 사용

정적 블록

static {
}
  • 클래스가 메모리로 로딩될 때 자동으로 실행됨
  • 클래스 내부에 여러개 선언될 수 있으며 순서대로 실행됨

사용

객체 참조 변수로도 접근이 가능하나 클래스 이름으로 접근하는 것이 좋음

# 객체 참조 변수로 접근
Calculator myCalc = new Calculator();
myCalc.pi;

# 클래스 이름으로 접근
Calculator.pi;

정적 메소드와 블록 선언 시 주의점

  • 객체가 없어도 실행되기 때문에 내부 인스턴스 멤버를 사용할 수 없음
  • 객체 자신의 참조인 this를 사용할 수 없음

위 두 가지를 사용하고 싶다면 객체를 먼저 생성 후 참조 변수로 접근해야 함

싱글톤

전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우

  • 클래스 외부에서 new 연산자로 생성자를 호출할 수 없어야 함 → 생성자를 private으로

6.11 final 필드와 상수

final 필드

초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없음. final이라고 상수는 아님

초기화 되지 않은 final이 있으면 컴파일 에러 발생

final 필드가 상수가 아닌 이유

final 필드는 객체마다 저장되고 생성자의 매개값을 통해서 여러 가지 값을 가질 수 있기 때문

초기값을 저장하는 방법

  • 필드 선언 시
  • 생성자에서

상수 (static)

불변의 값을 저장하는 필드

불변의 값은 객체마다 저장할 필요가 없는 공용성을 띠고 있으며, 여러 가지 값으로 초기화 될 수 없음

  • 상수는 static이면서 final이어야 함
  • 대문자로 작성하는 것이 관례

 

 

접근제한자와 어노테이션은 책 참조

반응형

'reviews > 이것이 자바다' 카테고리의 다른 글

6. 클래스 (1)  (0) 2022.01.23