[JAVA] 인스턴스 멤버와 this, 정적 멤버와 static, final 필드와 상수(static final)

임유빈·2022년 7월 18일
0

JAVA

목록 보기
4/17
post-thumbnail

1. 인스턴스 멤버와 this

(1) 인스턴스 멤버 개념

인스턴스 멤버란 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드를 말하는데, 이들을 각각 인스턴스 필드, 인스턴스 메소드라고 부른다. 우리가 지금까지 작성한 모든 필드와 메소드는 인스턴스 멤버들로, 인스턴스 필드와 메소드는 객체에 소속된 멤버이기 때문에 객체 없이는 사용할 수 없다.

(2) this 개념

객체 외부에서 인스턴스 멤버에 접근하기 위해 참조 변수를 사용하는 것과 마찬가지로 객체 내부에서도 인스턴스 멤버에 접근하기 위해 this를 사용할 수 있다. this는 객체가 자신을 알려줄 때 사용하며 같은 이름을 사용하였을 때 this는 가장 가까운 것을 찾는다.

2. 정적 멤버와 static

(1) 정적 멤버 개념

정적(static) 멤버란 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 이들을 각각 정적 필드, 정적 메소드라고 부르며 정적 멤버는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 한다.

(2) 정적 멤버 선언

(3) 정적 멤버 사용

클래스 이름과 함께 도트(.) 연산자로 접근한다.

(4) 인스턴스 멤버 선언 vs 정적 멤버 선언의 기준

▪ 필드
객체 마다 가지고 있어야 할 데이터 🡺 인스턴스 필드
공용적인 데이터 🡺 정적 필드

▪ 메소드
인스턴스 필드로 작업해야 할 메소드 🡺 인스턴스 메소드
인스턴스 필드로 작업하지 않는 메소드 🡺 정적 메소드

3. final 필드와 상수(static final)

(1) 개념

final의 의미는 최종적이란 뜻을 가지고 있다. final 필드는 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정 할 수 없다는 것이다.

• final 필드: 객체마다 가지는 불변의 인스턴스 필드
• 상수(static final): 객체마다 가지고 있지 않음, 메소드 영역에 클래스 별 로 관리되는 불변의 정적 필드, 공용 데이터로서 사용
▪ 규칙: 상수 이름은 전부 대문자로 작성, 다른 단어가 결합되면 _ 로 연결

(2) 선언

초기값을 주는 방법은 두가지인데 첫 번째는 필드 선언 시에 주는 방법이고, 두 번째는 생성자에서 주는 방법이다. 단순 값이라면 필드 선언 시에 주는 것이 제일 간단하다. 하지만 복잡한 초기화 코드가 필요하거나 객체 생성 시에 외부 데이터로 초기화해야 한다면 생성자에서 초기값을 지정해야 한다. 생성자는 final 필드의 최종 초기화를 마쳐야 하는데, 만약 초기화되지 않은 final 필드를 그대로 남겨두면 컴파일 에러가 발생한다.

0개의 댓글