[TIL][Java][2023-12-21] 인스턴스 멤버와 클래스 멤버
2023. 12. 21. 20:23ㆍTIL/Java
멤버
- 멤버 = 필드 + 메서드
- 인스턴스 멤버 = 인스턴스 필드 + 인스턴스 메서드
- 클래스 멤버 = 클래스 필드 + 클래스 메서드
인스턴스 멤버 & 클래스 멤버
- 필드와 메서드는 선언하는 방법에 따라서 인스턴스 멤버와 클래스 멤버로 구분할 수 있다.
- 인스턴스 멤버는 객체 생성 후에 사용할 수 있고 클래스 멤버는 객체 생성 없이도 사용할 수 있다.
인스턴스 멤버
- 인스턴스 멤버는 객체를 생성해야 사용할 수 있다.
- 객체의 인스턴스 필드는 각각의 인스턴스마다 고유하게 값을 가질 수 있다.
- 메서드는 메서드 영역에 두고 모든 인스턴스들이 공유해서 사용 - 메모리 효율이 매우 떨어지기 때문이다.
- 대신 인스턴스를 통해서만 메서드가 사용될 수 있도록 제한
클래스 멤버
- 클래스는 Java의 클래스 로더에 의해 메서드 영역에 저장되고 사용된다.
- 클래스 멤버란 메서드 영역의 클래스와 같은 위치에 고정적으로 위치하고있는 멤버를 의미한다.
- 따라서 클래스 멤버는 객체의 생성없이 바로 사용이 가능하다.
클래스 멤버 사용
- 클래스 멤버를 사용하려면 클래스의 이름과 함께 도트연산자를 사용하면 된다.
- 참조형 변수를 사용하여 클래스 멤버에 접근은 가능하지만 추천되지 않는 방법이다.
지역변수
- 메서드 내부에 선언한 변수를 의미한다.
- 메서드가 실행될 때마다 독립적인 값을 저장하고 관리하게된다.
- 지역변수는 메서드 내부에서 정의될 때 생성되어 메서드가 종료될 때 까지만 유지된다.
final 필드와 상수
- final 필드는 초기값이 저장되면 해당 값을 프로그램이 실행하는 도중에는 절대 수정할 수 없다.
- final 필드는 반드시 초기값을 지정해야 한다.
final 선언
- 필드 타입 앞에 final 키워드를 추가하여 선언할 수 있다.
- 사용방법은 일반적인 인스턴스 필드와 동일하다. (수정하려하면 오류 발생)
상수
- 상수의 특징은 값이 반드시 한개이며 불변의 값을 의미한다.
- 인스턴스마다 상수를 저장할 필요가 없다.
- final 앞에 static 키워드를 추가하여 모든 인스턴스가 공유할 수 있는 값이 한개이며 불변인 상수를 선언할 수 있다.
- 사용방법은 일반적인 인스턴스 필드와 동일하다.
- 일반적으로 상수는 대문자로 작성하는 것이 관례이다.
'TIL > Java' 카테고리의 다른 글
[TIL][Java][2023-12-27] this 와 this() (0) | 2023.12.27 |
---|---|
[TIL][Java][2023-12-22] 생성자 (constructor) (0) | 2023.12.22 |
[TIL][Java][2023-12-20] 기본형 매개변수, 참조형 매개변수 (2) | 2023.12.20 |
[TIL][Java][2023-12-19] 오버로딩 (0) | 2023.12.19 |
[TIL][Java][2023-12-18] 객체 - 객체의 행위: 메서드 (0) | 2023.12.18 |