멤버 = 필드 + 메서드
- 인스턴스 멤버 = 인스턴스 필드 + 인스턴스 메서드
- 클래스 멤버 = 클래스 필드 + 클래스 메서드
- 인스턴스 멤버 & 클래스 멤버
- 필드와 메서드는 선언하는 방법에 따라서 인스턴스 멤버와 클래스 멤버로 구분할 수 있습니다.
- 인스턴스 멤버는 객체 생성 후에 사용할 수 있고 클래스 멤버는 객체 생성 없이도 사용할 수 있습니다
인스턴스 멤버
- 인스턴스 멤버는 객체를 생성해야 사용할 수 있다.
- 또한 객체의 인스턴스 필드는 각각의 인스턴스 마다 고유하게 값을 가질 수 있다.
- 그렇다면 객체가 인스턴스화 할 때마다 객체의 메서드들은 인스턴스에 포함되어 매번 생성이 될까?
- 그렇지 않다. 매번 저장한다면 중복 저장으로 인해 메모리 효율이 매우 떨어지기 때문에 메서드는 메서드 영역에 두고서 모든 인스턴스들이 공유해서 사용한다.
- 대신 무조건 객체를 생성 즉, 인스턴스를 통해서만 메서드가 사용될 수 있도록 제한을 걸어둔 것이다.
클래스 멤버
클래스는 Java의 클래스 로더에 의해 메서드 영역에 저장되고 사용됩니다.
- 이때 클래스 멤버란 메서드 영역의 클래스와 같은 위치에 고정적으로 위치하고 있는 멤버를 의미합니다.
- 따라서 클래스 멤버는 객체의 생성 필요없이 바로 사용이 가능합니다.
클래스 멤버 선언
- 필드와 메서드를 클래스 멤버로 만들기 위해서는 static 키워드를 사용하면 됩니다.
- 일반적으로 인스턴스마다 모두 가지고 있을 필요없는 공용적인 데이터를 저장하는 필드는 클래스 멤버로 선언하는 것이 좋습니다.
- 또한 인스턴스 필드를 사용하지 않고 실행되는 메서드가 존재한다면 static 키워드를 사용하여 클래스 메서드로 선언하는 것이 좋습니다.
- 클래스 멤버로 선언된 메서드는 인스턴스 멤버를 사용할 수 없다.
- 반대로 인스턴스 멤버로 선언된 메서드는 클래스 멤버를 사용할 수 있다.
- 클래스 멤버는 객체 생성없이 바로 사용 가능하기 때문에 객체가 생성되어야 존재할 수 있는 인스턴스 멤버를 사용할 수 없다.
'JAVA공부' 카테고리의 다른 글
생성자 (1) | 2023.10.16 |
---|---|
지역변수 및 상수 (0) | 2023.10.16 |
기본형 & 참조형 매개변수 (0) | 2023.10.16 |
객체의 행위 : 메서드 (0) | 2023.10.16 |
객체의 속성 : 필드 (0) | 2023.10.16 |