[TIL][Java][2023-12-21] 인스턴스 멤버와 클래스 멤버

2023. 12. 21. 20:23TIL/Java

멤버

 

  • 멤버 = 필드 + 메서드
  • 인스턴스 멤버 = 인스턴스 필드 + 인스턴스 메서드
  • 클래스 멤버 = 클래스 필드 + 클래스 메서드

 

 

 

 

 

인스턴스 멤버 & 클래스 멤버

 

  • 필드와 메서드는 선언하는 방법에 따라서 인스턴스 멤버와 클래스 멤버로 구분할 수 있다.
  • 인스턴스 멤버는 객체 생성 후에 사용할 수 있고 클래스 멤버는 객체 생성 없이도 사용할 수 있다.

 

 

 

 

인스턴스 멤버

 

  • 인스턴스 멤버는 객체를 생성해야 사용할 수 있다.
  • 객체의 인스턴스 필드는 각각의 인스턴스마다 고유하게 값을 가질 수 있다.
  • 메서드는 메서드 영역에 두고 모든 인스턴스들이 공유해서 사용 - 메모리 효율이 매우 떨어지기 때문이다.
  • 대신 인스턴스를 통해서만 메서드가 사용될 수 있도록 제한

 

 

 

클래스 멤버

 

  • 클래스는 Java의 클래스 로더에 의해 메서드 영역에 저장되고 사용된다.
  • 클래스 멤버란 메서드 영역의 클래스와 같은 위치에 고정적으로 위치하고있는 멤버를 의미한다.
  • 따라서 클래스 멤버는 객체의 생성없이 바로 사용이 가능하다.

 

 

 

 

클래스 멤버 사용

 

  • 클래스 멤버를 사용하려면 클래스의 이름과 함께 도트연산자를 사용하면 된다.
  • 참조형 변수를 사용하여 클래스 멤버에 접근은 가능하지만 추천되지 않는 방법이다.

 

 

 

 

 

지역변수

 

  • 메서드 내부에 선언한 변수를 의미한다.
  • 메서드가 실행될 때마다 독립적인 값을 저장하고 관리하게된다.
  • 지역변수는 메서드 내부에서 정의될 때 생성되어 메서드가 종료될 때 까지만 유지된다.

 

 

 

 

final 필드와 상수

 

  • final 필드는 초기값이 저장되면 해당 값을 프로그램이 실행하는 도중에는 절대 수정할 수 없다.
  • final 필드는 반드시 초기값을 지정해야 한다.

 

final 선언

  • 필드 타입 앞에 final 키워드를 추가하여 선언할 수 있다.
  • 사용방법은 일반적인 인스턴스 필드와 동일하다. (수정하려하면 오류 발생)

 

상수

  • 상수의 특징은 값이 반드시 한개이며 불변의 값을 의미한다.
  • 인스턴스마다 상수를 저장할 필요가 없다.
  • final 앞에 static 키워드를 추가하여 모든 인스턴스가 공유할 수 있는 값이 한개이며 불변인 상수를 선언할 수 있다.
  • 사용방법은 일반적인 인스턴스 필드와 동일하다.
  • 일반적으로 상수는 대문자로 작성하는 것이 관례이다.