객체지향프로그래밍

최수정·2022년 12월 1일
0

이것이 JAVA다

목록 보기
6/10

💻 정적멤버 static


  • 정적 요소는 클래스 이름으로 접근하는 것이 정석이다. 정적 멤버를 객체 참조 변수로 접근하는 경우 경고표시가 뜬다.

🟨 생성자에서 초기화를 하지 않는 정적 필드
➡ 정적필드는 객체 생성 없이도 사용할 수 있기 때문에 생성자에서 초기화 작업을 하지 않는다. 생성자는 객체 생성 후 실행되기 때문이다.

  • 정적 블록은 클래스가 메모리로 로딩될 때 자동으로 실행된다. 정적 블록이 클래스 내부에 여러 개가 선언되어 있을 경우에는 선언된 순서대로 실행된다.

🟥 인스턴스 멤버 사용불가
정적 메소드와 정적 블록은 객체가 없어도 실행된다는 특징 때문에 내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 없다. 또한 객체 자신의 참조인 this도 사용할 수 없다.
객체 생성 후 참조변수로 접근하는 것은 가능하다.

위 예시들은 우리가 계속 사용하고 있는 main() 메소드를 생각하면 쉽다. main()함수도 static class 이기 때문이다.

💻 final


  • 초기값 저장 후엔, 읽기만 허용 되는 변수

객체마다 저장할 필요가 없고, 여러 개의 값을 가지면 안되는 수를 상수라고 한다.
이런 상수의 특징에 맞게 java에서는static이면서 final인 특성을 가져야 한다.

  • 상수 선언 - static final <타입> 상수 = 초기값;

복잡한 초기화가 필요할 경우에는 정적 블록에서 초기화 할 수도 있다.

static final <타입> 상수;
static {
	상수 = 초기값;
}

⬛ 또한 상수는 정적 필드 이므로 클래스로 접근해서 읽을 수 있다.

ex ) Math.PI

0개의 댓글